欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Android --- 刚刚进入 Activity 页面的时候无法打开对话框,报错 Unable to add window -- token null is not valid; is your

发布时间:2025/3/21 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Android --- 刚刚进入 Activity 页面的时候无法打开对话框,报错 Unable to add window -- token null is not valid; is your 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

报错如下:

E/AndroidRuntime: FATAL EXCEPTION: mainProcess: com.gxuwz.yixin, PID: 29723java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gxuwz.yixin/com.gxuwz.yixin.activity.edit.EditAddressActivity}: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3315)at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3464)at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2051)at android.os.Handler.dispatchMessage(Handler.java:107)at android.os.Looper.loop(Looper.java:239)at android.app.ActivityThread.main(ActivityThread.java:7604)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:953)Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?at android.view.ViewRootImpl.setView(ViewRootImpl.java:989)at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:387)at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:97)at android.widget.PopupWindow.originalInvokePopup(PopupWindow.java:1590)at android.widget.PopupWindow.invokePopup(PopupWindow.java:1575)at android.widget.PopupWindow.showAtLocation(PopupWindow.java:1345)at android.widget.PopupWindow.showAtLocation(PopupWindow.java:1311)at com.gxuwz.yixin.activity.edit.EditAddressActivity.onCreate(EditAddressActivity.java:46)at android.app.Activity.performCreate(Activity.java:7916)at android.app.Activity.performCreate(Activity.java:7903)at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306)at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3290)at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3464) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2051) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:239) at android.app.ActivityThread.main(ActivityThread.java:7604) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:953)

主要就这句:Unable to add window -- token null is not valid; is your activity running?

最终的意思就是,你的 Activity 视图还没有加载完,你就要在此 Activity 上添加对话框是不可以的
因为每一个对话框都要依附于一个 Activity,所以我们要用到一个判断 Activity 加载完的方法,在 Activity 加载完毕之后调用对话框即可

@Overridepublic void onWindowFocusChanged(boolean hasFocus){if (hasFocus) {// 调用对话框部分}}

但是有的小伙伴会发现,这个对话框会一直跳出,点了关闭又跳出,重复执行,所以我加了个计数器来判断。

int count = 0; @Overridepublic void onWindowFocusChanged(boolean hasFocus){if (hasFocus && count == 0) {count++;// 调用对话框部分}}

这样一来,只有第一次进入的时候会显示对话框,其余的时候都不会弹出了

总结

以上是生活随笔为你收集整理的Android --- 刚刚进入 Activity 页面的时候无法打开对话框,报错 Unable to add window -- token null is not valid; is your的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。