【问题标题】:Android application would not stop crashing despite its simplicity [duplicate]尽管它很简单,但Android应用程序不会停止崩溃[重复]
【发布时间】:2014-07-17 00:49:42
【问题描述】:

我目前正在制作一个非常简单的 Android 应用程序,遵循本教程:http://www.mkyong.com/android/android-textbox-example/

在我的fragment_main.xml,我有这个:

<EditText
    android:id="@+id/editText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <requestFocus />
</EditText>

在我的MainActivity.java 中,我有以下内容。它只是一个响应按键的应用程序。

private EditText edittext;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (savedInstanceState == null)
    {
        getFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment()).commit();
    }

    addKeyListener();
}

public void addKeyListener()
{
    // get edittext component
    edittext = (EditText) findViewById(R.id.editText);

    // add a keylistener to keep track of user input

    edittext.setOnKeyListener(new View.OnKeyListener()
    {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event)
        {
            if((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER))
            {
                // display a floating message
                Toast.makeText(MainActivity.this, edittext.getText(), Toast.LENGTH_LONG).show();
                return true;
            }
            else if((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_9))
            {
                // display a floating message
                Toast.makeText(MainActivity.this, "Number 9 is pressed!", Toast.LENGTH_LONG).show();
                return true;
            }
            return false;
        }
    });
}

应用程序基本上响应按键。

我拥有的所有东西都是我从股票应用程序中改变的唯一东西。我的 Note 3 上的目标是 4.3。

如果我的应用程序是 Hello World 应用程序(您使用 Eclipse 创建的普通应用程序),我的应用程序运行良好,但是,只要我向它添加其他组件/方法,它就会简单地让我感到不幸的是,myapp 有停止

我已经尝试为这个新示例创建一个新项目只是,但是应用程序崩溃的相同错误。

我想知道有人知道为什么会这样。编译不会告诉我任何警告/错误。

【问题讨论】:

标签: java android eclipse


【解决方案1】:

错误是:

edittext = (EditText) findViewById(R.id.editText);

因为editText组件在fragment_main.xml,而不是当前activity的contentview activity_main.xml,所以变量edittext的值必须为null,那么下面的代码会报错。

请将 addKeyListener() 方法移到 PlaceholderFragment 类中,就可以了。

【讨论】:

  • 没错,他分享的教程也已经过时了。那个根本没有实现 Fragment。
  • 您好 lxh2002。我在哪里打电话给addKeyListener()
  • 我还在上一堂课中实现了addKeyListener()。这是否意味着我还必须在fragment_view 的静态类中实现addKeyListener()
【解决方案2】:

我想解决方案很简单。您的 EditText 位于 fragment_main.xml 并且您正在使用 activity_main 在您的 java 文件中使用 setContentView()。因此会有 nullpointer 异常。解决方法是:更改 setContentView(R.layout.activity_main);到 setContentView(R.layout.fragment_main);

【讨论】:

  • 嗨@kgandroid。似乎您的方法比其他人建议的方法更简单,即将东西放入PlaceholderFragment。我很快就会在手机上测试一下。
猜你喜欢
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 2016-05-13
  • 2016-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多