初始化PopupWindow Caused by: android.view.WindowManager$BadTokenException:
2016-04-28 15:12
507 查看
如题,完整的错误提示信息是
Caused by: android.view.WindowManager$BadTokenException: Unable to add window – token null is not valid; is your activity running?
这个有很多中个情况会导致android.view.WindowManager$BadTokenException
我是在Activity的onCreate()方法中去创建并初始化PopupWindow的时候遇到这个问题,刚开始一脸懵逼,不知道什么原因,如下图提示的错误:
错误的提示指向了280行:
popupWindow.showAsDropDown(view);
仔细分析错误提示,当你的Activity在运行的时候,不能添加到窗口,token是空的无效的。想到我们以往的popupWindow创建都是在onClick()事件方法中被初始化然后弹出来的,现在的话,因项目的需要,直接放到了onCreate()中进行了初始化,没有经过事件也没用经过线程去调用初始化popupWindow。
那么,PopupWindow必须在某个事件中显示或者是开启一个新线程去调用,不能直在onCreate()方法中显示一个PopupWindow
于是乎,我们既然需要直接的调用popupWindow显示,那么我就通过开启一个handler来进行调用,具体的方法是在最外面顶一个showPopWindowHandler的Handler线程:
然后我们在onCreate()方法中去使用showPopWindowHandler,调用他的延迟加载方法:
·showPopWindowHandler .sendEmptyMessageDelayed(0, 10); ·//第二个参数任意
这样当进入到当前的这个activity当中的时候,延迟去调用并初始化PopupWindow,避免BadTokenException。
希望帮到你,欢迎交流!
Caused by: android.view.WindowManager$BadTokenException: Unable to add window – token null is not valid; is your activity running?
这个有很多中个情况会导致android.view.WindowManager$BadTokenException
我是在Activity的onCreate()方法中去创建并初始化PopupWindow的时候遇到这个问题,刚开始一脸懵逼,不知道什么原因,如下图提示的错误:
错误的提示指向了280行:
popupWindow.showAsDropDown(view);
仔细分析错误提示,当你的Activity在运行的时候,不能添加到窗口,token是空的无效的。想到我们以往的popupWindow创建都是在onClick()事件方法中被初始化然后弹出来的,现在的话,因项目的需要,直接放到了onCreate()中进行了初始化,没有经过事件也没用经过线程去调用初始化popupWindow。
那么,PopupWindow必须在某个事件中显示或者是开启一个新线程去调用,不能直在onCreate()方法中显示一个PopupWindow
于是乎,我们既然需要直接的调用popupWindow显示,那么我就通过开启一个handler来进行调用,具体的方法是在最外面顶一个showPopWindowHandler的Handler线程:
private Handler showPopWindowHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 0: showPopupWindow();//你自己定义的显示PopupWindow的方法 break; } } };
然后我们在onCreate()方法中去使用showPopWindowHandler,调用他的延迟加载方法:
·showPopWindowHandler .sendEmptyMessageDelayed(0, 10); ·//第二个参数任意
这样当进入到当前的这个activity当中的时候,延迟去调用并初始化PopupWindow,避免BadTokenException。
希望帮到你,欢迎交流!
相关文章推荐
- Android——消息机制
- 解决 Bitmap too large to be uploaded into a texture exception
- Android图片处理:识别图像方向并显示
- 直接应用项目中的Android图片缓存技术
- Android--高效地加载大图片
- Android中使用DownloadManager类来管理数据下载的教程
- Android获取图片,自动添加文字水印
- Android编程下Touch事件的分发和消费机制
- Android 组件Activity启动流程分析
- android studio获取sha1值
- Android中的context类详解
- Android为什么要设计出Bundle而不是直接使用HashMap来进行数据传递 Android内存优化(使用SparseArray和ArrayMap代替HashMap)
- Android 强制停止RecyclerView滑动方法
- Android 广播大全 Intent Action 事件
- Android快速开发系列 10个常用工具类
- Android SharedPreferences 权限设置
- Android的消息机制————读书笔记
- Android getDimension();getDimensionPixelOffset();getDimensionPixelSize()
- Android四大布局之线性布局及其属性
- 深入解析Android系统中应用程序前后台切换的实现要点