Java 致命异常:android.view.WindowManager$BadTokenException无法添加窗口--标记无效;你的活动正在进行吗?
我知道这个问题已经讨论过好几次了,但相信我,我从来没有得到任何有效的答案。 在我的主要活动中,我很少使用对话框来通知用户一些操作,但我在小米设备上得到了这个特定错误(特别是96%)。 ` com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)Java 致命异常:android.view.WindowManager$BadTokenException无法添加窗口--标记无效;你的活动正在进行吗?,java,android,dialog,xiaomi,Java,Android,Dialog,Xiaomi,我知道这个问题已经讨论过好几次了,但相信我,我从来没有得到任何有效的答案。 在我的主要活动中,我很少使用对话框来通知用户一些操作,但我在小米设备上得到了这个特定错误(特别是96%)。 ` com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) 我介绍了每个对话框显示方法,如 if (!MainActivityNew.this.isFinishing()) dialogDownload.show(); ` 但我还是在发布模式下遇
我介绍了每个对话框显示方法,如
if (!MainActivityNew.this.isFinishing())
dialogDownload.show();
`
但我还是在发布模式下遇到了这个错误,主要是在小米设备上
对于Android版本7,请帮助我,我在过去一个月一直在解决这个问题
以下是来自firebase Crashlytics的一些数据
装置
100%小米
操作系统
100%安卓7
设备状态
4%背景使用异步任务或处理程序
比如:
这个问题不是因为对话,而是因为吐司。这个Toast问题主要出现在android 7.1版本中,在该版本中,上下文变为null。这位先生创造了一个解决方案。我已经测试过了,效果很好。你可以试试这个
if (android.os.Build.VERSION.SDK_INT == 25) {
ToastCompat.makeText(context, message, Toast.LENGTH_SHORT)
.setBadTokenListener(toast -> {
Log.e("failed toast", message);
}).show();
} else {
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
}
请参阅此链接:-谢谢Rajshree,但我已经提到我使用了上面答案中所述的isFinishing()方法。从何处启动showToast方法?它是来自Activity、AsyncTask还是任何其他后台线程?它来自主UIThread@SantoshPatange你处理好了吗?我有一个类似的问题,但对于摩托罗拉E4和安卓7.1.1,就像作者所说的——他检查活动是否正在完成
Use private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message message) {
switch (message.what) {
case DISPLAY_DLG:
if (!isFinishing()) {
dialogDownload.show();
}
break;
}
}
};
if (android.os.Build.VERSION.SDK_INT == 25) {
ToastCompat.makeText(context, message, Toast.LENGTH_SHORT)
.setBadTokenListener(toast -> {
Log.e("failed toast", message);
}).show();
} else {
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
}