PopupWindow的错误:android.view.WindowManager$BadTokenException

如题:在activity的oncreate方法中使用popupwindow出现以下错误: 
android.view.WindowManager$BadTokenException: Unable to add window -- 
token null  is not valid; is your activity running?
 
错误代码如下 : 
Java代码   收藏代码
  1. pop = new PopupWindow(pop_view,320,250);  
  2. pop.showAtLocation(parent, Gravity.TOP,00);  

解决方法: 
应把pop.showAtLocation(parent, Gravity.TOP,0, 0)这一句移出oncreate方法,在控件渲染完毕后再使用
分享到:   
评论
6 楼  endual 1 分钟前    引用
我把调用popuwindow的方法写入到mHandler中,并没有发声阻塞,真是奇怪啊。
后来还是改用了alertdialogt + handler + runnable解决的
5 楼  eajon 2012-03-14    引用
我写在handler里面,正常使用时没问题的,就是进行许多的别的activity操作之后再返回到这个acticity,在handler里面调用也会出错
4 楼  MultiArrow 2011-12-13    引用
janey19891018 写道
"直到判断控件是否渲染完毕(如长宽大于0),


如何判断渲染完毕?

在oncreate里另起一个线程,在线程中使用while来循环判断pop的长宽(其实是在等待控件渲染完毕),如果大于0,则说明控件已经渲染完毕,中止循环,然后可设置pop.showAtLocation(parent, Gravity.TOP,0, 0)。
ps:总感觉这不是个好方法,有很大可能会陷入死循环。还有,如果觉得while时太占用资源,可用while里设置一个sleep,比较说sleep(100),这样的话循环不了几次控件就浸染完了。不会太耗费资源。
3 楼  janey19891018 2011-11-12    引用
"直到判断控件是否渲染完毕(如长宽大于0),


如何判断渲染完毕?
2 楼  MultiArrow 2011-10-10    引用
mochenyang 写道
你就会说,你做做看,移到哪?

1、移到事件中;
2、移到子线程中;
另起一线程,在线程中不断循环,直到判断控件是否渲染完毕(如长宽大于0),不推荐。。。
3、移到重写的控件(parent)中,在控件ondraw()完后生成pop。
ps:1、2绝对没问题,3没测试过。
1 楼  mochenyang 2011-10-10    引用
你就会说,你做做看,移到哪?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值