Android菜单到CustomDailog - app forcecloses本身

时间:2012-07-27 17:42:10

标签: android android-menu customdialog

这是我用于菜单项选择的代码:

public boolean onOptionsItemSelected(MenuItem item) {
      switch (item.getItemId()) {
      case R.id.menu_settings:
            showDialog(1);
            return true;

      default:
            return super.onOptionsItemSelected(item);
      }
 }

菜单中只有一个选项,我使用以下代码设计了一个customDialog:

protected Dialog onCreateDialog(int id) {

        Context mContext = getApplicationContext();
        Dialog dialog = new Dialog(mContext);

        dialog.setContentView(R.layout.custom_dialog);
        dialog.setTitle("About Us");

        TextView text = (TextView) dialog.findViewById(R.id.text);
        text.setText("App Created By: Prateek Garg (garg.prateek1@gmail.com)");
        ImageView image = (ImageView) dialog.findViewById(R.id.image);
        image.setImageResource(R.drawable.logo_resumes);
        return dialog;
        }
}

问题在于,无论何时按下“关于我们”菜单项​​,应用程序都会自行关闭。 我无法纠正任何错误,但我希望你们可以。

提前致谢。 PS。我在onCreateOptionsMenu()中创建了menuInflator()。

干杯

LOGCAT显示以下错误:[我不知道如何理解或删除它们...... :(]

  

07-27 23:35:04.569:W / dalvikvm(648):threadid = 1:线程退出,未捕获异常(组= 0x40a13300)

     

07-27 23:35:04.659:E / AndroidRuntime(648):致命异常:主

     

07-27 23:35:04.659:E / AndroidRuntime(648):android.view.WindowManager $ BadTokenException:无法添加窗口 - 令牌null不适用于应用程序

     

07-27 23:35:04.659:E / AndroidRuntime(648):在android.view.ViewRootImpl.setView(ViewRootImpl.java:589)

     

07-27 23:35:04.659:E / AndroidRuntime(648):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:326)    还有更多。

如果你们这样说,我也会包括其余的错误,但我认为它们只是因为第一个或第二个而形成,一般情况下

1 个答案:

答案 0 :(得分:1)

强制关闭很可能是空指针异常。实际上有几种方法可能会发生,但很可能是其中一个UI元素不可用。这可能是因为它不在您为视图/对话框指定的布局中,或者因为您未能为View调用setContentView(R.layout.layoutName)。另一种可能性是像TextView这样的项目,它没有指定高度和宽度值。在大多数UI元素上,这是必需的,并将导致运行时错误。为了看到logcat goto window-> show view - > logcat

运行时错误将显示为红色。如果关闭应用程序,它通常会包含致命的单词。所以转到logcat中的那一点。查找第一行,您可以看到com.mypackage.test.MyActivity或MyDialog等内容。这条线将是红色的。确保它与您的包名称一致,因为错误将指向许多系统的东西。单击该行,它将带您到代码中发生崩溃的位置。也发布错误。您应该始终在StackOverflow上发布错误消息。