ndroid.view.WindowManager$BadTokenException: Unable to add window -- token null for displayid = 0 is not valid; is your activity running? 报错
时间: 2024-01-13 11:18:32 浏览: 182
这个错误通常是由于尝试在Activity已经被销毁后添加窗口而引起的。当你尝试在Activity已经被销毁后添加窗口时,窗口管理器会尝试使用一个无效的令牌来添加窗口,从而导致此错误。为了解决这个问题,你可以尝试以下几种方法:
1.确保你在正确的上下文中添加窗口。如果你正在使用一个已经被销毁的Activity的上下文来添加窗口,那么你需要使用一个有效的上下文来添加窗口。
2.确保你在正确的线程中添加窗口。如果你正在使用一个非UI线程来添加窗口,那么你需要在UI线程中添加窗口。
3.确保你在正确的时间添加窗口。如果你正在尝试在Activity已经被销毁后添加窗口,那么你需要在Activity销毁之前添加窗口。
以下是一个示例代码,演示如何在正确的上下文和线程中添加窗口:
```java
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.my_layout, null);
wm.addView(view, params);
}
});
```
阅读全文