Java AlertDialog不显示并导致崩溃

Java AlertDialog不显示并导致崩溃,java,android,Java,Android,在onOptionsItemSelected方法中显示AlertDialog时出现问题。也就是说,我希望用户按delete options按钮,然后在从db中清除项目之前确认删除。如果我运行当前代码,我的程序就会崩溃。希望有人能帮忙。非常感谢:) 下面是我所拥有的代码片段 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.detailsm

onOptionsItemSelected
方法中显示
AlertDialog
时出现问题。也就是说,我希望用户按delete options按钮,然后在从db中清除项目之前确认删除。如果我运行当前代码,我的程序就会崩溃。希望有人能帮忙。非常感谢:)

下面是我所拥有的代码片段

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
      getMenuInflater().inflate(R.menu.detailsmenu, menu);
      return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
      // Handle item selection
      switch(item.getItemId()) {
      case R.id.rename:
        openRenameDialog();
        return true;
      case R.id.delete:         
        openDeleteDialog();
        return true;
      default:
        return super.onOptionsItemSelected(item);   
      }
    }

    private void openDeleteDialog() {
      AlertDialog.Builder alert = new AlertDialog.Builder(this);
      alert.setTitle(R.string.deleteTitle);
      alert.setMessage(R.string.deleteMessage);

      alert.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
          // todo       
        }
      });

      alert.setNegativeButton("No", new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface dialog, int whichButton) { 
            dialog.cancel();
         }
      });

    alert.show();
}
Logcat输出:

07-17 14:16:57.845: WARN/KeyCharacterMap(2304): No keyboard for id 0 07-17 14:16:57.845: WARN/KeyCharacterMap(2304): Using default keymap: /system/usr/keychars/qwerty.kcm.bin 07-17 14:17:01.564: WARN/ResourceType(2304): getEntry failing because entryIndex 24 is beyond type entryCount 24 07-17 14:17:01.564: WARN/ResourceType(2304): Failure getting entry for 0x7f040018 (t=3 e=24) in package 0 (error -2147483647) 07-17 14:17:01.564: DEBUG/AndroidRuntime(2304): Shutting down VM 07-17 14:17:01.574: WARN/dalvikvm(2304): threadid=1: thread exiting with uncaught exception (group=0x40015560) 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): FATAL EXCEPTION: main 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): android.content.res.Resources$NotFoundException: String resource ID #0x7f040018 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): at android.content.res.Resources.getText(Resources.java:201) 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): at android.content.Context.getText(Context.java:173) 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): at android.app.AlertDialog$Builder.setMessage(AlertDialog.java:318) 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): at tod.dosetracker.DetailsActivity.openDeleteDialog(DetailsActivity.java:63) 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): at tod.dosetracker.DetailsActivity.onOptionsItemSelected(DetailsActivity.java:48) 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): at android.app.Activity.onMenuItemSelected(Activity.java:2205) 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:748) 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143) 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855) 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:532) 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122) 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): at android.view.View$PerformClick.run(View.java:9080) 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): at android.os.Handler.handleCallback(Handler.java:587) 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): at android.os.Handler.dispatchMessage(Handler.java:92) 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): at android.os.Looper.loop(Looper.java:123) 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): at android.app.ActivityThread.main(ActivityThread.java:3683) 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): at java.lang.reflect.Method.invokeNative(Native Method) 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): at java.lang.reflect.Method.invoke(Method.java:507) 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 07-17 14:17:01.594: ERROR/AndroidRuntime(2304): at dalvik.system.NativeStart.main(Native Method) 07-17 14:17:01.604: WARN/ActivityManager(60): Force finishing activity tod.dosetracker/.DetailsActivity 07-17 14:17:02.114: WARN/ActivityManager(60): Activity pause timeout for HistoryRecord{407e38f0 tod.dosetracker/.DetailsActivity} 07-17 14:17:11.615: WARN/ActivityManager(60): Launch timeout has expired, giving up wake lock! 07-17 14:17:12.156: WARN/ActivityManager(60): Activity idle timeout for HistoryRecord{406dbd10 tod.dosetracker/.FoodListActivity} 07-17 14:17:17.388: WARN/ActivityManager(60): Activity destroy timeout for HistoryRecord{407e38f0 tod.dosetracker/.DetailsActivity} 07-17 14:16:57.845:WARN/KeyCharacterMap(2304):id 0没有键盘 07-17 14:16:57.845:WARN/KeyCharacterMap(2304):使用默认keymap:/system/usr/keychars/qwerty.kcm.bin 07-17 14:17:01.564:警告/资源类型(2304):getEntry失败,因为entryIndex 24超出类型entryCount 24 07-17 14:17:01.564:警告/资源类型(2304):获取包0中0x7f040018(t=3 e=24)的条目失败(错误-2147483647) 07-17 14:17:01.564:调试/AndroidRuntime(2304):关闭虚拟机 07-17 14:17:01.574:WARN/dalvikvm(2304):threadid=1:线程以未捕获异常退出(组=0x40015560) 07-17 14:17:01.594:错误/AndroidRuntime(2304):致命异常:主 07-17 14:17:01.594:ERROR/AndroidRuntime(2304):android.content.res.Resources$NotFoundException:字符串资源ID#0x7f040018 07-17 14:17:01.594:ERROR/AndroidRuntime(2304):位于android.content.res.Resources.getText(Resources.java:201) 07-17 14:17:01.594:ERROR/AndroidRuntime(2304):位于android.content.Context.getText(Context.java:173) 07-17 14:17:01.594:ERROR/AndroidRuntime(2304):在android.app.AlertDialog$Builder.setMessage(AlertDialog.java:318) 07-17 14:17:01.594:ERROR/AndroidRuntime(2304):位于tod.dosetracker.DetailsActivity.openDeleteDialog(DetailsActivity.java:63) 07-17 14:17:01.594:错误/AndroidRuntime(2304):在tod.dosetracker.DetailsActivity.onOptionsItemSelected(DetailsActivity.java:48) 07-17 14:17:01.594:ERROR/AndroidRuntime(2304):在android.app.Activity.onMenuItemSelected(Activity.java:2205) 07-17 14:17:01.594:ERROR/AndroidRuntime(2304):位于com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:748) 07-17 14:17:01.594:ERROR/AndroidRuntime(2304):在com.android.internal.view.menu.menuitemmpl.invoke(menuitemmpl.java:143)上 07-17 14:17:01.594:ERROR/AndroidRuntime(2304):位于com.android.internal.view.menu.MenuBuilder.performitemation(MenuBuilder.java:855) 07-17 14:17:01.594:ERROR/AndroidRuntime(2304):位于com.android.internal.view.menu.iconmenuive.invokeItem(iconmenuive.java:532) 07-17 14:17:01.594:ERROR/AndroidRuntime(2304):位于com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122) 07-17 14:17:01.594:ERROR/AndroidRuntime(2304):在android.view.view$PerformClick.run(view.java:9080) 07-17 14:17:01.594:ERROR/AndroidRuntime(2304):在android.os.Handler.handleCallback(Handler.java:587)上 07-17 14:17:01.594:ERROR/AndroidRuntime(2304):在android.os.Handler.dispatchMessage(Handler.java:92)上 07-17 14:17:01.594:ERROR/AndroidRuntime(2304):在android.os.Looper.loop(Looper.java:123)上 07-17 14:17:01.594:ERROR/AndroidRuntime(2304):在android.app.ActivityThread.main(ActivityThread.java:3683)上 07-17 14:17:01.594:ERROR/AndroidRuntime(2304):位于java.lang.reflect.Method.invokenactive(本机方法) 07-17 14:17:01.594:ERROR/AndroidRuntime(2304):位于java.lang.reflect.Method.invoke(Method.java:507) 07-17 14:17:01.594:ERROR/AndroidRuntime(2304):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 07-17 14:17:01.594:ERROR/AndroidRuntime(2304):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 07-17 14:17:01.594:错误/AndroidRuntime(2304):在dalvik.system.NativeStart.main(本机方法) 07-17 14:17:01.604:WARN/ActivityManager(60):强制完成活动tod.dosetracker/.DetailsActivity 07-17 14:17:02.114:WARN/ActivityManager(60):历史记录{407e38f0 tod.dosetracker/.DetailsActivity}的活动暂停超时 07-17 14:17:11.615:警告/活动管理器(60):启动超时已过期,放弃唤醒锁定! 07-17 14:17:12.156:WARN/ActivityManager(60):历史记录{406dbd10 tod.dosetracker/.FoodListActivity}的活动空闲超时 07-17 14:17:17.388:WARN/ActivityManager(60):历史记录{407e38f0 tod.dosetracker/.DetailsActivity}的活动销毁超时
确保xml中有deleteTitle和deleteMessage字符串。 也可以尝试使用

AlertDialog.Builder alert = new AlertDialog.Builder(getApplicationContext());

我刚刚在测试应用程序中尝试了您的代码,我正在创建
AlertDialog
。似乎代码中的其他地方一定有错误。你能发布stacktrace吗?我已经将logcat输出到一个txt文件,但它相当大。有没有办法发布文件?抱歉,我在STI上的第一篇帖子已经在上面发布了logcat输出:)当然,你的deleteTitle和deleteMessage有问题,因为我告诉过你要检查它是的,你是绝对正确的。我在一个资源字符串“æ”中使用了一个特殊字符。我只是使用intellisence来检查资源是否可用,而实际上我应该硬编码另一个字符串进行测试。对不起,给你添麻烦了。谢谢:这两个资源也存在。我已经将logcat输出到一个txt文件,但它相当大。有没有办法发布文件?抱歉,我在STX上的第一篇帖子首先单击右上角的横截面进行清理。然后再次运行您的程序,将日志复制并粘贴到您编辑的问题中。当您看到类似的问题时,只需清理并构建您的应用程序。谢谢,我以后会这样做;)