我試圖打開一個對話窗口,但每次我嘗試打開它時都會拋出這個例外:
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)
我使用顯示器的ID調用showDialog
來創建它。該onCreateDialog
處理記錄良好,我可以通過它沒有問題的一步,但因爲它看起來像我想的東西我已經把它貼吧:
@Override
public 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
變量看起來好像它正確地填充在調試器。
它也被報告爲一個錯誤(雖然它不是當用戶發佈問題時):http://code.google.com/p/android/issues/detail?id=11199 – 2011-09-30 00:45:50
只是以防萬一這有助於任何人 - 在對話框中使用myActivity.this作爲上下文。 – 2011-12-05 15:55:10
這個問題和答案在2天內變成3歲。我仍然獲得聲望,所以我猜Google還沒有修復他們的文檔... – Torp 2013-04-12 17:50:36