解决popupWindow 的android.view.WindowManager$BadTokenException问题
程序员文章站
2022-07-09 09:27:42
...
PopupWindow 写在事件监听里面是不会出现这个异常的,当你不写在事件监听里面,希望Activity被创建就弹出Popupwindow,最典型应该就是视频的播放吧,如图,我觉得再多的文字也当不了图形形象,上面那一排就是一个popupWindow
这时候如果你在onCreate就会出现WindowManager$BadTokenException异常,pupupWindow需要Activity获取到了焦点才能显示出来,也许你会想在onResume()方法让PopupWindow显示,因为onResume()是Activity获取到了焦点回调的方法,事实上我也这么想过,但还是行不通,onResume()是刚开始获得焦点就调用这个方法,先执行完了onResume(),之后在执行onWindowFocusChanged()
//the activity has Focus show popupwindow,else throws android.view.WindowManager$BadTokenException @Override public void onWindowFocusChanged(boolean hasFocus) { // TODO Auto-generated method stub super.onWindowFocusChanged(hasFocus); ////有焦点的时候,让你的PopupWindow显示出来 if(hasFocus){ playerPopup.showAtLocation(mView, Gravity.TOP|Gravity.FILL, 0, 0); } }
上一篇: 6种不同的CSS实现垂直水平居中
下一篇: 安卓折线图插件和自带截图分享的实现
推荐阅读
-
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
-
解决eclipse中egit中的cannot open git-upload-pack问题
-
在笔记本中Virtual PC 2007的问题及解决方案
-
Mysql数据库从5.6.28版本升到8.0.11版本部署项目时遇到的问题及解决方法
-
解决nohup执行python程序log文件写入不及时的问题
-
解决Vue+Element ui开发中碰到的IE问题
-
解决vue打包css文件中背景图片的路径问题
-
解决vue-router在同一个路由下切换,取不到变化的路由参数问题
-
sql server 2000阻塞和死锁问题的查看与解决方法
-
mysql报错1033 Incorrect information in file: ‘xxx.frm’问题的解决方法