簡體   English   中英

警報對話框無法添加窗口錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM