Unable to add window -- token null is not valid; is your activity running?
来源:互联网 发布:debian 更改ssh端口 编辑:程序博客网 时间:2024/04/29 23:46
在使用PopupWindow时出现的error,这个错误有一句话is your activity running?看到这句话时,立刻想到了是由于PopupWindow依赖的窗口没销毁掉。
PopupWindow的创建方式:
// 获取自定义布局文件activity_popupwindow_left.xml的视图 private void createPop(){ View popupWindow_view =getLayoutInflater().inflate(R.layout.activity_popupwindow_left, null, false); // 创建PopupWindow实例,200,LayoutParams.MATCH_PARENT分别是宽度和高度 popupWindow = new PopupWindow(popupWindow_view, 200, LayoutParams.MATCH_PARENT, true); // 设置动画效果 popupWindow.setAnimationStyle(R.style.AnimationFade); popupWindow.showAtLocation(mBmiValue , Gravity.BOTTOM, 0, 0);//mBmivalue是锚点 }
所以就立刻想到了在onDestory()方法中调用popupWindow.dismiss(),结果不行。
源码是这样写的(写了部分源码):
public class ChatRoomActivity extends FragmentActivity private Button mBmiValue; private PopupWindow popupWindow; @Override public void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_chatroom); mBmiValue = (TextView) findViewById(R.id.tvBmiValue); //调用上面的创建pop函数 createPop(); }private void createPop(){ View popupWindow_view=getLayoutInflater(). inflate(R.layout.activity_popupwindow_left, null, false); // 创建PopupWindow实例,200,LayoutParams.MATCH_PARENT分别是宽度和高度 popupWindow = new PopupWindow(popupWindow_view, 200, LayoutParams.MATCH_PARENT, true); // 设置动画效果 popupWindow.setAnimationStyle(R.style.AnimationFade); popupWindow.showAtLocation(mBmiValue , Gravity.BOTTOM, 0, 0);//mBmivalue是锚点 } @Override public void onDestroy() { popupWindow.dismiss(); super.onDestroy(); } }
这要写运行结果是第一次进入这个ChatRoomActivity 时,popupWindow显示正常,立刻退出,在进入,呵呵,报错了Unable to add window – token null is not valid; is your activity running?,立即在onDestroy()加了 popupWindow.dismiss();认为这样就可以了。
重复进入activity,在立刻退出,结果还是报错,最后在这个http://stackoverflow.com/questions/4187673/problems-creating-a-popup-window-in-android-activity里面找到了解决方法。
为什么会出现这个原因呢?是因为popupWindow显示依赖activity,并且要等activity所有的生命周期方法全部执行完成才能显示。所以修改了代码
public class ChatRoomActivity extends FragmentActivity private Button mBmiValue; private PopupWindow popupWindow; @Override public void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_chatroom); mBmiValue = (TextView) findViewById(R.id.tvBmiValue); mBmiValue.post(new Runnable(){ //调用上面的创建pop函数 createPop(); }); /* //调用上面的创建pop函数 createPop(); */ }private void createPop(){ View popupWindow_view=getLayoutInflater(). inflate(R.layout.activity_popupwindow_left, null, false); // 创建PopupWindow实例,200,LayoutParams.MATCH_PARENT分别是宽度和高度 popupWindow = new PopupWindow(popupWindow_view, 200, LayoutParams.MATCH_PARENT, true); // 设置动画效果 popupWindow.setAnimationStyle(R.style.AnimationFade); popupWindow.showAtLocation(mBmiValue , Gravity.BOTTOM, 0, 0);//mBmivalue是锚点 } @Override public void onDestroy() { popupWindow.dismiss(); super.onDestroy(); } }
加入了 mBmiValue.post(new Runnable(){
//调用上面的创建pop函数
createPop();
});在运行时没有报错了,post()可以延迟到所有生命周期方法执行完后,在显示popupWindow
- PopupWindow出现Unable to add window -- token null is not valid; is your activity running?
- PopWindow Unable to add window -- token null is not valid; is your activity running
- Unable to add window -- token null is not valid; is your activity running?
- - Unable to add window -- token null is not valid; is your activity running?
- Unable to add window -- token null is not valid; is your activity running?
- unable to add window -- token null is not valid; is your activity running 错误解决办法
- PopupWindow出现Unable to add window -- token null is not valid; is your activity running?
- Unable to add window -- token null is not valid; is your activity running?错误及其修改方法
- popupwindow使用之异常-Unable to add window -- token null is not valid; is your activity running?
- Unable to add window — token android.os.BinderProxy is not valid; is your activity running?
- Unable to add window -- token android.os.BinderProxy@XXX is not valid; is your activity running?
- Unable to add window -- token android.os.BinderProxy@xxx is not valid; is your activity running
- Unable to add window — token android.os.BinderProxy is not valid; is your activity running?
- Unable to add window --token is not valid; is your activity running?
- 关于android的一个常见错误:Unable to add window --token is not valid; is your activity running?
- Anroid 异常:Unable to add window …… is not valid; is your activity running?
- Unable to add window is not valid; is your activity running?
- view.WindowManager$BadTokenException: Unable to add window…is not valid; is your activity running?
- 洛谷 P1133 教主的花园
- python_scapy构造ping程序
- c++设计模式之组合模式(composite)
- Spring mvc 从一个http请求分析DispatcherServlet的工作过程
- CDH SQOP使用参考文档
- Unable to add window -- token null is not valid; is your activity running?
- Checkbox全选和反选
- IB Designables: Failed to update auto layout status: Failed to load designables from path (null)(实战)
- asp.net mvc 绑定DropDownList或select
- 145颜色方块(11)
- Spark 单机安装配置
- 【测试学习】(一)——JUnit测试框架和组合模式
- Git SSH Key 生成步骤
- C++ 内存分配(new,operator new)详解