Android开发解决popupWindow重叠报错问题
在popupWindow里面再弹出popupWindow的时候会报这样的错误
ERROR/AndroidRuntime(888):android.view.WindowManager$BadTokenException:Unabletoaddwindow--tokenandroid.view.ViewRoot$W@44ef1b68isnotvalid;isyouractivityrunning?
报错的意思大概就是说依赖的Activity没了。
解决方法1
不要在当前的popupWindow里面继续show一个popupWindow,应该写一个接口回调到Activity里面进行show,
解决方法2
如果只是简单的弹窗提醒的话,把第二次弹出的popupwindows改为Toast,
publicclassVerifySuccessDialogextendsToast{ publicVerifySuccessDialog(Contextcontext){ super(context); //设置toast的View setView(LayoutInflater.from(context).inflate(R.layout.include_popwindow_verify,null)); //弹出位置 setGravity(Gravity.CENTER,0,0); //时长 setDuration(Toast.LENGTH_SHORT); } }
用的地方就
newVerifySuccessDialog(mActivity).show();
解决方法3
第二次弹窗改为Dialog,设置dialog的style,在Style.xml添加
@drawable/trans @null true true adjustPan
定义一个Dialog类
publicclassVerifySuccessDialogextendsDialog{ //用来设置时间自动关闭 privateintshowTime; publicVerifySuccessDialog(Contextcontext){ super(context,R.style.VerifyDialog); setContentView(R.layout.include_popwindow_verify); } publicintgetShowTime(){ returnshowTime; } publicvoidsetShowTime(intshowTime){ this.showTime=showTime; } }
用就直接:
VerifySuccessDialogdialog=newVerifySuccessDialog(mActivity);
显示的地方
dialog.show();
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接