1. 程式人生 > >PopupWindow出現Unable to add window -- token null is not valid; is your activity running?

PopupWindow出現Unable to add window -- token null is not valid; is your activity running?

PopupWindow出現android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?的異常是因為PopupWindow需要依附在一個建立好的Activity上,那麼出現這個異常就說明此時你的Activity還沒有建立好,出現這種情況,很可能是在onCreate()或者是onStart()中呼叫導致的。

/**
     * 這個函式在Activity建立完成之後會呼叫。購物車懸浮窗需要依附在Activity上,如果Activity還沒有完全建好就去
     * 呼叫showCartFloatView(),則會丟擲異常
     * @param hasFocus
     */
    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if(hasFocus && BaseApplication.COUNT > 0) {
            isInitFloatViewLocation = true;     // 購物車有資料了,肯定要初始化購物車懸浮窗的初始位置,準備顯示
            showCartFloatView();
        }
    }

showCartFloatView()的實現其實就是PopupWindow的建立,大家可以自己替換成自己的實現。此時就不會再出現上面那個該死的異常了。