今天是在北京隔离的第十四天 ,明天就可以去公司上班了 。

 

 

使用 Popupwindow的时候出现的闪退 。

 

Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
 

logcat 错误日志

 Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
        at android.view.ViewRootImpl.setView(ViewRootImpl.java:858)
        at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:356)
        at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:94)
        at android.widget.PopupWindow.invokePopup(PopupWindow.java:1434)
        at android.widget.PopupWindow.showAtLocation(PopupWindow.java:1203)
        at android.widget.PopupWindow.showAtLocation(PopupWindow.java:1170)
        at com.edusoho.kuozhi.cuour.gensee.vod.VodVideoActivity.initData(VodVideoActivity.java:563)
        at com.edusoho.commonlib.base.NewBaseActivity.onCreate(NewBaseActivity.java:63)
        at com.edusoho.kuozhi.cuour.base.BaseToolbarActivity.onCreate(BaseToolbarActivity.java:30)
        at android.app.Activity.performCreate(Activity.java:7224)
        at android.app.Activity.performCreate(Activity.java:7213)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)

 

原因

由于PopupWindow弹窗不能直接在Activity的onCreate函数里执行,必须要等activity的生命周期函数全部执行完毕之后

 

 

解决方案(一)

使用 view.post

    iv_news_icon.post(new Runnable() {
                @Override
                public void run() {
                    View contentView = LayoutInflater.from(mActivity).inflate(R.layout.popup_news_tips, null);
                    popupWindow = new PopupWindow(contentView ,ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
                    popupWindow.setBackgroundDrawable(new BitmapDrawable());

                    // 设置弹窗外可点击
                    popupWindow.setOutsideTouchable(true);
                    popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
                    popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
                    popupWindow.setContentView(contentView);

                    popupWindow.showAtLocation(iv_news_icon, Gravity.NO_GRAVITY,0,0);
                }
            });

...

...

...

 

PS:属于一个小瑕疵。

 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐