欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

解决popupWindow 的android.view.WindowManager$BadTokenException问题

程序员文章站 2022-07-09 09:27:42
...

PopupWindow 写在事件监听里面是不会出现这个异常的,当你不写在事件监听里面,希望Activity被创建就弹出Popupwindow,最典型应该就是视频的播放吧,如图,我觉得再多的文字也当不了图形形象,上面那一排就是一个popupWindow解决popupWindow 的android.view.WindowManager$BadTokenException问题
            
    
    博客分类: Android javaNokiaWindows Mobile三星 

这时候如果你在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);
		}
	}