Unable to add window -- token android.os.BinderProxy@XXX is not valid; is your activity running?

来源:互联网 发布:windows平板做点菜系统 编辑:程序博客网 时间:2024/04/29 20:11

错误如下:

01-05 23:15:59.748: E/AndroidRuntime(17418): android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@429de368 is not valid; is your activity running?
01-05 23:15:59.748: E/AndroidRuntime(17418): at android.view.ViewRootImpl.setView(ViewRootImpl.java:559)
01-05 23:15:59.748: E/AndroidRuntime(17418): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:259)
01-05 23:15:59.748: E/AndroidRuntime(17418): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
01-05 23:15:59.748: E/AndroidRuntime(17418): at android.app.Dialog.show(Dialog.java:286)
01-05 23:15:59.748: E/AndroidRuntime(17418): at xxxx.BaseActivity$mHandler.handleMessage(BaseActivity.java:76)
01-05 23:15:59.748: E/AndroidRuntime(17418): at android.os.Handler.dispatchMessage(Handler.java:102)
01-05 23:15:59.748: E/AndroidRuntime(17418): at android.os.Looper.loop(Looper.java:136)
01-05 23:15:59.748: E/AndroidRuntime(17418): at android.app.ActivityThread.main(ActivityThread.java:5047)
01-05 23:15:59.748: E/AndroidRuntime(17418): at java.lang.reflect.Method.invokeNative(Native Method)
01-05 23:15:59.748: E/AndroidRuntime(17418): at java.lang.reflect.Method.invoke(Method.java:515)
01-05 23:15:59.748: E/AndroidRuntime(17418): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:807)
01-05 23:15:59.748: E/AndroidRuntime(17418): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:623)
01-05 23:15:59.748: E/AndroidRuntime(17418): at dalvik.system.NativeStart.main(Native Method)


使用情况如下:A和B继承相同的父类Activity,从A跳转到B后,再从B返回到A,在A中使用父类的ProgressDialog时崩溃报错。


这种报错很常见,意思就是说ProgressDialog所依赖的Context不存在了。原因是实例化B时,ProgressDialog也会被实例化,它依赖的context(具体可在ProgressDialog成员变量中找到)是B,从B返回A时我是直接finish的(我考虑的是启动activity时会把activity加入栈中,B退出,就露出了A,就是一个返回的效果)。那么在A中使用ProgressDialog时就会出问题,因为此时的ProgressDialog是B的,但B已经不在了,所以会错。


解决办法,从B返回A时用startActivity()重新生成A。


0 0
原创粉丝点击