[英]Alert Dialog Unable to add window Error
我正在嘗試使用此代碼從RecyclerView.Adapter
創建AlertDialog
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(new ContextThemeWrapper(context, R.style.AppTheme));
alertDialogBuilder.setView(R.layout.reserve_dialog);
alertDialogBuilder.create();
alertDialogBuilder.show();
但我在logcat中遇到此錯誤:
Theme: themes:{}
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
怎么了?
代替getApplicationContext(),只需使用ActivityName.this即可。
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(new ContextThemeWrapper(activity, R.style.AppTheme));
alertDialogBuilder.setView(R.layout.reserve_dialog);
alertDialogBuilder.create();
if(!isFinishing()){
alertDialogBuilder.show();
}
您正在傳遞context.getApplicationContext()
代替此通過活動上下文
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(new ContextThemeWrapper(MainActivity.this, R.style.AppTheme));
alertDialogBuilder.setView(R.layout.reserve_dialog);
alertDialogBuilder.create();
alertDialogBuilder.show();
刪除getApplicationContext()並傳遞活動上下文。
內部新對話(youractivity.this,樣式)
希望它能解決
如果要在RecylerView.Adapter
內部創建對話框,請在Adapter的構造函數中傳遞活動對象,並在創建構建器時使用該對象本身-
if (!activity.isFinishing()) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(new ContextThemeWrapper(activity, R.style.AppTheme));
alertDialogBuilder.setView(R.layout.reserve_dialog);
alertDialogBuilder.create();
alertDialogBuilder.show();
}
當您在非活動類中顯示對話框時,則必須將活動作為參數傳遞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.