我目前正在制作一个非常非常简单的 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 有停止了。
我尝试为这个新示例创建一个新项目只是,但应用程序崩溃时出现相同的错误。
我想知道有人知道为什么会发生这种情况。编译没有告诉我任何警告/错误。
最佳答案
错误是:
edittext = (EditText) findViewById(R.id.editText);
由于editText组件位于fragment_main.xml中,而不是当前activity的contentview的activity_main.xml中,因此变量edittext的值必须为null,那么下面的代码将导致错误。
请将addKeyListener()方法移到PlaceholderFragment类中即可。
关于java - 尽管 Android 应用程序很简单,但它不会停止崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23900740/