Unable to add window --token null is not valid; is your activity running

项目中经常会用到的组件PopupWindow,而运用它时往往会用到它的方法showAtLocation(),所以,我们在运用不当时会出现crash的现象,原因就是view还没有加载完毕,这时就要显示PopupWindow,所以导致异常。

这样类似的情况,我们会遇到的报错信息如下:

Unable to add window --token null is not valid; is your activity running
问题一般会出现在华为honor和小米手机上

原因:

PopupWindow.showAtLocation(findViewById(R.id.main), Gravity.BOTTOM,0,0);
popwindow必须依附于某一个view,而在oncreate中view还没有加载完毕,必须要等activity的生命周期函数全部执行完毕,你需要依附的view加载好后才可以执行popwindow。

解决方法:

延时1s执行

findviewById(R.id.mView).postDelay(new Runnable() {  
    @Override  
    public void run() {  
        popwindow.showAtLocation(mView, Gravity.CENTER, 0, 0);  
    }  
},1000);  

猜你喜欢

转载自blog.csdn.net/dota_wy/article/details/79999471