新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 使用 PopupWindow 的注意事項

        使用 PopupWindow 的注意事項

        作者: 時間:2016-10-08 來源:網絡 收藏

        預備知識

        本文引用地址:http://www.104case.com/article/201610/305624.htm

        使用 PopupWindow 之前, 一定要知道 Android 是怎么響應旋轉屏幕的. 如果不知道的話, 那就先去了解下這個知識點. >>> Google 關鍵詞: Android Activity 重建

        另外需要知道的就是PopupWindow的使用方法. >>> Google 關鍵詞: Android PopupWindow

        注意事項

        不要在 Activity.onCreate(Bundle) 中直接調用

        如果你直接調用PopupWindow.show***(...)的方法, 那么系統會回饋你一個錯誤, 如下:

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

        如果切實需要在 Activity.onCreate(Bundle) 中彈出 PopupWindow, 那么你可以通過 View.post(Runnable) 來完成, ---- 這個調用可以確保彈出窗口時, Activity 已經完成初始化.

        p.s. View.post(Runnable) 要比 Handler.post(Runnable) 強大, 具體參考Android SDK Source.

        在旋轉屏幕時不要忘記對 PopupWindow 進行處理

        如果你忘記了, 那么系統還是會回饋你一個錯誤, 如下:

        Activity net.oschina.demo.MainActivity has leaked window android.widget.PopupWindow$PopupViewContainer{42148068 V.E..... ......I. 0,0-297,59} that was originally added here

        android.view.WindowLeaked: Activity net.oschina.demo.MainActivity has leaked window android.widget.PopupWindow$PopupViewContainer{42148068 V.E..... ......I. 0,0-297,59} that was originally added here

        在這里就要用到上述轉屏的知識了. 一般情況, 都可以通過禁止轉屏重建 Activity 來解決這個錯誤. 除此之外, 就是在 onCreate/onResume/onStart/onPause/onStop/onDestroy 等處手動維護 PopupWindow 的狀態, 確保轉屏前, 調用 PopupWindow.dismiss() .

        p.s. 正是因為這些問題, 所以我不怎么喜歡用PopupWindow....



        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 龙川县| 高州市| 和龙市| 闸北区| 恩平市| 常宁市| 嫩江县| 永昌县| 阜阳市| 灵寿县| 南丰县| 阿克陶县| 二手房| 布拖县| 凤台县| 荔浦县| 兴文县| 贡山| 苏尼特左旗| 荥阳市| 恩施市| 蒲城县| 普兰县| 玉门市| 华坪县| 扎鲁特旗| 翁牛特旗| 达尔| 新龙县| 天镇县| 仁布县| 长岭县| 铁岭县| 广汉市| 固镇县| 如东县| 纳雍县| 西峡县| 马公市| 桃园县| 秦皇岛市|