尝试响应菜单点击时,startActivity崩溃

时间:2010-07-13 07:09:11

标签: android

我知道其他地方已经介绍过,但我是Android平台的新手,我很难搞清楚如何在我的第一个应用程序中添加基本菜单选项。

我使用

设置选项菜单
@Override
public boolean onCreateOptionsMenu(Menu menu){
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.menu.menu, menu);
  return true;
}

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menuPrefs" android:icon="@android:drawable/ic_menu_preferences" android:title="Settings"></item>
</menu>

然后在我的主java类中我有

@Override
public boolean onOptionsItemSelected(MenuItem item){

 if(item.getItemId()==R.id.menuPrefs) {
  showPrefs();
 }
private void showPrefs() {
 Intent i = new Intent(this, Prefs.class);
 startActivity(i);
}

然后在Prefs.java中我有

public class Prefs extends Activity {

     @Override
     protected void onCreate(Bundle savedInstanceState) {
      Toast.makeText(getBaseContext(), "FNORD", Toast.LENGTH_LONG).show();
     }
    }

现在我可以在按下菜单选项时看到Toast消息“FNORD”,但是应用程序意外停止。

如果我将toast语句移动到showPrefs()函数中代替startActivity调用,它就可以工作。

3 个答案:

答案 0 :(得分:1)

您忘记在Prefs'super.onCreate(Bundle savedInstanceState);方法上致电onCreate()

答案 1 :(得分:0)

您需要了解如何在Eclipse中进行调试以及如何使用ADBDDMS工具。

为了获得有关异常/强制关闭的更多详细信息,您需要在Eclipse中查找名为Logcat的视图(您将在DDMS透视图中找到),在那里您将找到详细的追溯何时/什么以及在什么方面是问题。

为此,您应该阅读有关Debugging in Android using Eclipse

的完整文章

alt text http://www.droidnova.com/blog/wp-content/uploads/2009/09/debugging-3.gif

答案 2 :(得分:0)

解决方案是我需要将Prefs.xml添加到清单。