android.view.WindowManager$BadTokenException:Unable to add window --token is not valid; is your acti
2015-11-19 12:11
579 查看
异常信息:
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
问题描述:在Activity的onResume()方法中起一个线程,并在线程结束的时候弹出一个popupwindow,但是在这段代码处却报上面的异常:
打印findViewById(android.R.id.content)却不是空,网上查找资料,说原因是Activity的控件还没有渲染完,可以通过以下方法来解决这个问题:
这里虽然new了一个Runnable接口,但是run()方法中的代码却是在主线程执行的,这段代码的作用,就是把popupwindow弹出这段代码加到主线程的消息队列中去,stackoverflow中答案的作者说:这样就能等控件渲染完,再弹出popupwindow。这个方法确实解决了我的问题。
这种方法在弹出Dialog时,同样适用
以下几点是我的疑问:
1、android Activity的生命周期中,在onStart()方法之后,Activity就是visiable状态,那么为什么在onResume()中启动线程,然后弹出popupwindow,这个时候Activity的控件为什么还没有渲染完?
2、view.post()方法只是把消息放到主线程的消息队列中,为什么就会在Activity中的控件渲染完成之后再执行popupwindow弹出那段代码?
3、这个问题只在5.1.1系统的一个机器上出现了,但是在低版本的系统中却没有出现。
问题地址:http://stackoverflow.com/questions/4187673/problems-creating-a-popup-window-in-android-activity
相关问题:“android.view.WindowManager$BadTokenException: Unable to add window — token null is
not for an application”
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
问题描述:在Activity的onResume()方法中起一个线程,并在线程结束的时候弹出一个popupwindow,但是在这段代码处却报上面的异常:
popupwindow.showAtLocation(findViewById(android.R.id.content), Gravity.CENTER, 0,0);
打印findViewById(android.R.id.content)却不是空,网上查找资料,说原因是Activity的控件还没有渲染完,可以通过以下方法来解决这个问题:
findViewById(android.R.id.content).post(new Runnable() { @Override public void run() { popupWindow.showAtLocation( findViewById(android.R.id.content), Gravity.CENTER, 0, 0); } });
这里虽然new了一个Runnable接口,但是run()方法中的代码却是在主线程执行的,这段代码的作用,就是把popupwindow弹出这段代码加到主线程的消息队列中去,stackoverflow中答案的作者说:这样就能等控件渲染完,再弹出popupwindow。这个方法确实解决了我的问题。
这种方法在弹出Dialog时,同样适用
以下几点是我的疑问:
1、android Activity的生命周期中,在onStart()方法之后,Activity就是visiable状态,那么为什么在onResume()中启动线程,然后弹出popupwindow,这个时候Activity的控件为什么还没有渲染完?
2、view.post()方法只是把消息放到主线程的消息队列中,为什么就会在Activity中的控件渲染完成之后再执行popupwindow弹出那段代码?
3、这个问题只在5.1.1系统的一个机器上出现了,但是在低版本的系统中却没有出现。
问题地址:http://stackoverflow.com/questions/4187673/problems-creating-a-popup-window-in-android-activity
相关问题:“android.view.WindowManager$BadTokenException: Unable to add window — token null is
not for an application”
相关文章推荐
- Android Launcher 应用图标大小不一的情况或GirdView Item 不规则处理与解决
- android多媒体编程--画画板
- 隐藏Android下的虚拟按键
- Android NDK开发入门学习笔记(图文教程,极其详尽)
- Android布局动画简单应用
- Android广播机制概述
- android radiobutton 改变TextColor
- android图片压缩之BitmapFactory的使用
- 获取Android设备的方向
- 在Android下实现鼠标右键返回
- android开发表情输入
- Android--保持加速度传感器在屏幕关闭后运行(收集)
- android中树形json解析为对象,并通过dialog显示,多级列表
- Android界面背景图片不显示---三星手机
- android添加按键(二)
- android 获取组件尺寸大小
- 获取当前应用的版本号和当前android系统的版本号
- Android 二维码生成器
- Android如何获取asset下的xml文件,并解析
- android 添加按键(一)