微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android.view.WindowManager$BadTokenException 崩掉

问题:

以前的项目,今天打开运行,Activity刚打开的时候,点开一个弹窗是好的,但是再点到另一个界面的时候,返回,再点弹窗就崩了。

 

解决

网上查了一下,发现出现这个问题的还特别多,大体如下:

1、对话框中的context为null

2、权限问题加入

<uses-permission android:name="android.permission.SYstem_ALERT_WINDOW"/>
跟踪以后,我发现Context并不为null,有值特好的。
权限加与不加,一个

那这个问题到底是咱回事呢?

1)第一次点打开AlertDialog是好的,
2)打开另一个窗口的时候,再次返回,再点弹窗就崩。

那这个问题应该是因为打开了另一个窗口,才出现的。

但是另一个窗口返回并没有写什么呢

再次跟踪,发现里面用了一个mContext对象,mContext = getContext();这里是在父类调用了。

那将mContext = getActivity()试下
发现,还是那样子,一点就崩。

另外,我发现中间打开的另一个界面的父类跟这个一样。那就是父类中的值被修改了,这样才会出这个问题
AlertDialog是需要有一个宿主的,这样才可以打开,
然而,这个宿主在半路被另一个界面修改了,导致mContext表面上是有的,但实际上并不存在的一个家伙(它已经finish)。

解决方法
将mContext改为getActivity()就可以了。
这样不管中间那个界面打开过,我只取自已所在的Activity,那就没问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐