• 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,那就没问题。
  • 相关阅读:
    [HNOI 2015]菜肴制作
    [HNOI 2015]落忆枫音
    [NOIp 2009]靶形数独
    [HNOI 2010]Bounce 弹飞绵羊
    [CTSC 1999]拯救大兵瑞恩&[网络流24题]孤岛营救问题
    [SDOI 2008]Cave 洞穴勘测
    pandas 5 str 参考:https://mp.weixin.qq.com/s/Pwz9iwmQ_YQxUgWTVje9DQ
    比较工具
    当小内存遇上大量数据,你该怎么解决这个问题?
    python高性能编程 读书笔记
  • 原文地址:https://www.cnblogs.com/jiduoduo/p/12365318.html
Copyright © 2020-2023  润新知