在一個Honeycomb應用程序中,我在幾個地方使用PopupWindow的自定義子類來顯示各種視圖。這一切都很好,直到其中一個視圖碰巧嘗試顯示另一個PopupWindow。是否可以在另一個PopupWindow中顯示PopupWindow?
例如,Spinner和AutoCompleteTextView都使用PopupWindow來顯示其關聯的選項列表。如果你把這些在PopupWindow的觀點之一,並點擊激活窗口小部件時,窗口管理器,將通過logcat的警告你:
WARN/WindowManager(111): Attempted to add window with token that is a sub-window: [email protected] Aborting.
然後當它實際上試圖說明,PopupWindow它會拋出一個WindowManager$BadTokenException
。
自定義PopupWindow的視圖正在使用從錨視圖的上下文中獲取的LayoutInflater進行膨脹。我已經看到其他問題,表明在使用不合適的上下文獲取LayoutInflater時會出現BadTokenExceptions,但在這種情況下似乎沒有其他選項。
來自WindowManager的日誌警告似乎表明這是一個不受支持的情況。任何人都可以證實這一點,或提供一個棍子戳我正確的方向嗎?
下面是從錯誤的情況下發起的代碼(有些版本的它,反正)鏈接:WindowManagerService.java
對此有何好運?我也試圖獲得類似的東西 – 2011-11-28 14:25:58
沒有運氣。我相信這是根本不可能的,所以我轉而使用對話框或對話主題活動,我之前使用PopupWindow並需要子窗口功能。 – lyricsboy 2011-12-05 18:43:46
我也是。我將我的Popup轉換爲Trasparent主題的活動,以實現我需要的功能。 – 2011-12-07 06:36:44