android.view.WindowManager$BadTokenException
来源:互联网 发布:数据库安装教程 编辑:程序博客网 时间:2024/05/22 14:20
1,错误分析:
从错误信息我们也可以明白其原因,此问题根本原因就是由于将要弹出的dialog所要依附的View已经不存在导致的。
2,什么地方可能照成此问题:当界面销毁后再弹出来;或者界面跳转时我们的view发生改变,dialog依附的context发生变化或者界面未运行了。
此外,很多时候我们需要通过一个非组件类来调用一个view类的方法来弹出dialog或Toast,这样就需要再提供一个静态context来创建这个dialog或者Toast
例如我们在一个view中通过一个静态类来弹出一个对话框:AlertDialog.Builder builder = new AlertDialog.Builder(mContextNew);当然并不是所有静态context都是可以用来创建dialog的,例如***App().getApplication().getApplicationContext()这个context就不行,因为它并不代表哪一个Activity或者View。。这样就无法add这个dialog。
此view用于绑定显示数据,我们在其构造方法中初始化一个静态变量mContextNew为此view的mContext。这样我们就可以通过一个静态类来弹出对话框了,只需传入这个静态的context(mContextNew)就可以了。。但是这个静态的context如果只在构造方法中初始化的话是会存在问题的,因为如果另起了一个界面其绑定数据的view也是用的这个view那么这个静态context就会被重新修改。。因此当这个新的界面finish后返回到上次的界面,这个静态的context是刚才已经finish的view的context。因此如果仍然传入这个静态变量通过一个静态类来弹出对话框就会出现上述找不到window的错误了。
解决办法:
对于tab页出现的错误可以用其父类的context来弹出dialog;对于界面已经销毁引起的错误就只能判断界面是否存在然后再弹出了;对于利用静态context来弹出的dialog可以通过规避的方式来解决,比如避免出现静态context被修改。。但是这样就可能限制了我们程序的功能。。因此我们可以通过在bind数据时时时更新这个静态context就可以解决此问题了,这样就可以保证这个静态的context在任何view中都是当前的界面的view的context。就不会出现找不到其父类window了。
- android.view.WindowManager$BadTokenException
- android.view.WindowManager$BadTokenException
- android.view.WindowManager$BadTokenException
- android.view.WindowManager$BadTokenException
- 关于Android.view.WindowManager$BadTokenException异常
- 窗口异常 android.view.WindowManager$BadTokenException
- 解决常见的android.view.WindowManager$BadTokenException
- android show dialog exception or android.view.windowManager BadTokenException
- Android中常见android.view.WindowManager$BadTokenException错误
- Android dialog中出现异常android.view.WindowManager$BadTokenException
- Android Crash解决方案之android.view.WindowManager$BadTokenException
- Android Crash解决方案之android.view.WindowManager$BadTokenException
- Android WindowManager$BadTokenException异常
- Android WindowManager$BadTokenException异常
- Android WindowManager$BadTokenException异常
- Android WindowManager$BadTokenException 处理
- Android WindowManager$BadTokenException错误
- Android :BUG:WindowManager$BadTokenException
- DBSCAN基于密度的聚类算法
- 1011. A+B和C
- 【计算机视觉】opencv姿态解算4 视觉导航 单目特征检测与实时位姿
- 多进程与多线程的区别?
- QWidget关系图及部件
- android.view.WindowManager$BadTokenException
- 丑数(某一些数可以只由给定集合的元素的幂次相乘获得)模板
- 信息熵、条件熵、信息增益
- 【Qt】使用libusb和hidapi实现hid通信
- Python拾遗之类属性和实例属性(一)
- hadoop编程之mapreduce,计算总数和平均数
- 并发与并行的理解
- make 命令参数笔记
- DNS域名系统