今天组内的小伙伴,碰到了一个Android异常,当时正好也是闲着,帮忙看了下。
android.view.WindowManager$BadTokenException:
Unable to add window -- token android.os.BinderProxy
@443b7270
is not valid; is your activity running
第一眼看到这个,我就说,你那边是不是有个activity,要用的时候被异常关闭了吧。
然后顺着这条思路走下去,发现Activity根本没有关闭。所以这条路放弃了。
坐下来研究了一下:这是一个tab主页面,内部加载了几个tab子页面。而他的需求是在某个tab子页面中,接收到了某种广播,然后弹一个
dialog出来,简单的需求,但是始终是报错
。
跟了下代码发现,那个tab子页面会根据内容动态变更view。所以这边弹出dialog的地方不能放在这里。
new CommonAlertDialog(xxx.this, xxx, xxx).show();
因为view 改变之后 这个xxx.this 就不是原来的xxx.this了,所以最佳的做法还是放在tab主页面里边弹dialog,父tab的context是不会变的。
另外tab这种东西已经淘汰了。
偶尔碰到,希望改别人老代码bug的小伙伴不要碰到这种坑了。