猿问

Android1.6:“android.view.WindowManager$BadTokenExc

Android1.6:“android.view.WindowManager$BadTokenExc

我试图打开一个对话框窗口,但是每次打开它都会抛出这个异常:

Uncaught handler: thread main exiting due to uncaught exception
android.view.WindowManager$BadTokenException: 
     Unable to add window -- token null is not for an application
  at android.view.ViewRoot.setView(ViewRoot.java:460)
  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
  at android.app.Dialog.show(Dialog.java:238)
  at android.app.Activity.showDialog(Activity.java:2413)

我是通过打电话来创建它的showDialog显示的身份。这个onCreateDialog处理程序日志很好,我可以在没有问题的情况下完成它,但是我已经附加了它,因为我似乎遗漏了一些东西:

@Overridepublic Dialog onCreateDialog(int id){
    Dialog dialog;
    Context appContext = this.getApplicationContext();
    switch(id)
    {
        case RENAME_DIALOG_ID:
            Log.i("Edit", "Creating rename dialog...");
            dialog = new Dialog(appContext);
            dialog.setContentView(R.layout.rename);
            dialog.setTitle("Rename " + noteName);
            break;
        default:
            dialog = null;
            break;
    }
    return dialog;      }

有什么东西不见了吗?创建对话框时,有一些问题谈到了这个问题。onCreate,这是因为活动尚未创建,但这是来自菜单对象的调用,而appContext变量似乎已在调试器中正确填充。


红颜莎娜
浏览 462回答 3
3回答

温温酱

不能通过非活动的上下文显示应用程序窗口/对话框。尝试传递有效的活动引用

跃然一笑

在getApplicationContext问题上也是如此。Android网站上的文档说要使用它,但是它不起作用.grrrrr:-P只要做:dialog = new Dialog(this);“这个”通常是您启动对话框的活动。
随时随地看视频慕课网APP

相关分类

Android
我要回答