據我所知,有兩種方法可以顯示來自Activity的對話框。Dialog.show()與Activity.showDialog()
- 創建對話框(例如,使用
AlertDialog.Builder
),然後調用新創建的對話的方法show()
。 - 調用Activity的
showDialog()
方法,傳遞一個int值來唯一定義要構建的對話框類型。然後覆蓋onCreateDialog()
實際構建對話框,Android會爲您顯示它。
第二種方法似乎是標準做法,但我很好奇,如果有任何理由,我很重要。這裏的一切,我可以想出:
理由使用Dialog.show
- 如果需要參數對話框以某種方式,它可以是一個有點尷尬使用
Activity.showDialog
,如this question描述。您可能必須在成員變量中存儲字符串或其他內容,以便在onCreateDialog
或onPrepareDialog
期間可以稍後檢索它。 - 用於創建和修改對話框的邏輯在多個地方展開,有可能使得代碼難以閱讀和維護:
- ,你叫
showDialog()
- 裏面一個潛在的大
switch
語句中的位置在重寫onCreateDialog
方法 - 裏面一個潛在的大
switch
聲明重寫的onPrepareDialog
方法
- ,你叫
理由使用Activity.showDialog
:
- 的API文檔
Activity.showDialog
說,對話是「管理」,其中我想提供一些好處的活動?但是,如果您使用AlertDialog.Builder
,我認爲這也是如此,因爲您將this
作爲參數傳遞給Builder的構造函數。 - 如果您的活動將多次顯示相同(或非常相似)的對話框,則此選項只會創建一次,而不是每次都創建一個新對話框,因此就分配空間而言,對系統的壓力較小對於新對象,垃圾收集等
所以我的問題是,什麼是決定何時使用Activity.showDialog
以及何時使用Dialog.show
,爲什麼標準是什麼?
有一個關於爲什麼我們選擇Activity.showDialog而不是Dialog.show的詳細技術說明。 http://www.dreamincode.net/forums/topic/233010-dialogs-and-the-android-lifecycle/是的。主要涉及屏幕方向。 – 2012-03-16 01:34:45
這裏只需要注意一點:'onCreateDialog()'只在需要創建對話框時調用一次,這是您最初設置對話框內容的地方。如果你需要更新它的內容,你應該使用'onPrepareDialog()'方法,這個方法在每次顯示對話框之前被調用,以便你適時地更新它的內容。 – Caumons 2012-03-23 14:59:35