android.view.WindowManager$BadTokenException: Unable to add window

显示一个对话框:

然后报了android.view.WindowManager$BadTokenException: Unable to add window错误。

冒一看,以为是token方面的错误,但是是context方面的错。

new QMUIDialog.CheckBoxMessageDialogBuilder(mContext)
                            .setTitle("退出后是否删除账号信息?")
                            .setMessage("删除账号信息")
                            .setChecked(true)
                            .setSkinManager(QMUISkinManager.defaultInstance(mContext))
                            .addAction("取消", new QMUIDialogAction.ActionListener() {
                                @Override
                                public void onClick(QMUIDialog dialog, int index) {
                                    dialog.dismiss();
                                }
                            })
                            .addAction("退出", new QMUIDialogAction.ActionListener() {
                                @Override
                                public void onClick(QMUIDialog dialog, int index) {
                                    dialog.dismiss();
                                }
                            })
                            .create(mCurrentDialogStyle).show();

以上是正确的代码,之前mContext传入的是

getApplicationContext()
这里传的应该是this.
这样在Activity里调用就不会有问题。

详细的,也可以参考这文:

https://blog.csdn.net/u011038298/article/details/84104451

原文地址:https://www.cnblogs.com/jiduoduo/p/13802029.html