窗口管理器错误令牌无法添加窗口

时间:2019-09-19 05:47:55

标签: android android-studio android-layout

我正在适配器类中打开一个对话框。但它向我显示了窗口管理器错误令牌错误。

private void Dialog()
{

    final Dialog dialog = new Dialog(this.context.getApplicationContext());
    dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

    dialog.setCancelable(false);
    dialog.setContentView(R.layout.pg_dialog);

    TextView text = (TextView) dialog.findViewById(R.id.tv_dialog_statusMsg);
    TextView textDescp = (TextView) dialog.findViewById(R.id.tv_dialog_discriptMsg);

    Button dialogButton = (Button) dialog.findViewById(R.id.btnOkDialog);

    dialogButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();

            Toast.makeText(context, "HELLO", Toast.LENGTH_SHORT).show();
            FetchWalletBalance();


        }
    });

    dialog.show();

}

2 个答案:

答案 0 :(得分:0)

代替:

final Dialog dialog = new Dialog(this.context.getApplicationContext());

尝试:

Dialog dialog = new Dialog(yourClass.this);

请注意已传递参数。

答案 1 :(得分:0)

在初始化对话框或视图时不使用aplicationContext,需要更改活动上下文:示例

final Dialog dialog = new Dialog(Dialog(this@MainActivity));

并更改dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);dialog.window?.setType(WindowManager.LayoutParams.TYPE_TOAST)或将其删除,否则将导致应用崩溃。