致命异常:android.view.WindowManager$BadTokenException 无法添加 window -- 令牌无效;你是 activity 运行 吗?
Fatal Exception: android.view.WindowManager$BadTokenException Unable to add window -- token is not valid; is your activity running?
我知道这个问题已经讨论过好几次了,但相信我,我从来没有得到任何有效的答案。
在我的 Main Activity 中,我使用了很少的对话框来通知用户一些操作,但我在小米设备上主要(特别是 96%)遇到了这个特定的错误。
`
Fatal Exception: android.view.WindowManager$BadTokenException
Unable to add window -- token android.os.BinderProxy@f839de9 is not valid; is your activity running?
android.view.ViewRootImpl.setView (ViewRootImpl.java:697)
android.view.WindowManagerGlobal.addView (WindowManagerGlobal.java:347)
android.view.WindowManagerImpl.addView (WindowManagerImpl.java:94)
android.widget.Toast$TN.handleShow (Toast.java:463)
android.widget.Toast$TN.handleMessage (Toast.java:346)
android.os.Handler.dispatchMessage (Handler.java:102)
android.os.Looper.loop (Looper.java:163)
android.app.ActivityThread.main (ActivityThread.java:6377)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:904)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:794)
I covered each Dialog Show method like
if (!MainActivityNew.this.isFinishing())
dialogDownload.show();
`
但我仍然在发布模式下遇到这个错误,主要是在 Xiaomi 设备上
使用 Android 版本 7,请帮助我,我在过去一个月一直遇到这个问题。
以下是来自 firebase Crashlytics 的一些数据
设备
100% 小米
操作系统
100% Android 7
设备状态
4% 背景
使用异步任务或处理程序
喜欢:
Use private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message message) {
switch (message.what) {
case DISPLAY_DLG:
if (!isFinishing()) {
dialogDownload.show();
}
break;
}
}
};
这个问题不是因为Dialog,而是因为Toast。这个 Toast 问题主要出现在 android 7.1 版本中,上下文变为空。这位先生 Solution 创建了一个解决方案。我已经测试过,效果很好。你可以试试这个。
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();
}
我知道这个问题已经讨论过好几次了,但相信我,我从来没有得到任何有效的答案。 在我的 Main Activity 中,我使用了很少的对话框来通知用户一些操作,但我在小米设备上主要(特别是 96%)遇到了这个特定的错误。 `
Fatal Exception: android.view.WindowManager$BadTokenException
Unable to add window -- token android.os.BinderProxy@f839de9 is not valid; is your activity running?
android.view.ViewRootImpl.setView (ViewRootImpl.java:697)
android.view.WindowManagerGlobal.addView (WindowManagerGlobal.java:347)
android.view.WindowManagerImpl.addView (WindowManagerImpl.java:94)
android.widget.Toast$TN.handleShow (Toast.java:463)
android.widget.Toast$TN.handleMessage (Toast.java:346)
android.os.Handler.dispatchMessage (Handler.java:102)
android.os.Looper.loop (Looper.java:163)
android.app.ActivityThread.main (ActivityThread.java:6377)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:904)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:794)
I covered each Dialog Show method like
if (!MainActivityNew.this.isFinishing())
dialogDownload.show();
` 但我仍然在发布模式下遇到这个错误,主要是在 Xiaomi 设备上 使用 Android 版本 7,请帮助我,我在过去一个月一直遇到这个问题。
以下是来自 firebase Crashlytics 的一些数据
设备 100% 小米 操作系统 100% Android 7 设备状态 4% 背景
使用异步任务或处理程序 喜欢:
Use private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message message) {
switch (message.what) {
case DISPLAY_DLG:
if (!isFinishing()) {
dialogDownload.show();
}
break;
}
}
};
这个问题不是因为Dialog,而是因为Toast。这个 Toast 问题主要出现在 android 7.1 版本中,上下文变为空。这位先生 Solution 创建了一个解决方案。我已经测试过,效果很好。你可以试试这个。
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();
}