2012-10-04 97 views
0

每當我發現設備位置已更改時,都會顯示AlertDialog。在應用程序認爲合適的時候,這種情況幾乎就發生了。AlertDialog在新活動開始時丟失

問題是,如果對話框剛好在新的活動開始之前出現,對話框將隨舊活動消失。無論如何有AlertDialog塊新的意圖?或翻譯成新的活動(我可以更新上下文)?

我注意到AlertDialogs甚至不處理設備旋轉的情況,所以我對此的希望不是太高,但任何輸入都會有所幫助。

+1

你說得對,Alert Dialogs無法處理這個問題,但Toast可以,所以如果你不想要使用AlertDialog,你可以使用Toast。 – Daniel

回答

2

我會簡單地使用SharedPreference設置,並在潛在的中斷活動開始時檢查它。例如:

Ex;

  1. 組共享偏好值至1
  2. 開始對話
  3. 完成時,共享的偏好保存到0
  4. 如果活動的開始和共享的偏好是1,則中斷,從而啓動一個警報對話。如果它是0,繼續前進。

同樣,一個AlertDialog是爲了其自身附加到一個活動,所以你真的不能從dieing阻止它,如果您以前的活動推回或失去屏幕焦點(UI線程基本上擱置!)

希望你能解決你的問題,這個小修正。

要添加丹尼爾評論,自定義敬酒可以是真棒。然而,它們只限於約3.5秒(我認爲) 更多關於自定義麪包; http://developer.android.com/guide/topics/ui/notifiers/toasts.html#CustomToastView

+0

我絕對相信一個習慣Toast會完成它。還有一些黑客可以讓你顯示Toast超過3.5秒。 – atreat

+0

最後,我選擇更改我的設計,以便Activities檢查是否應顯示對話框而不是嘗試創建全局對話框。我認爲這符合Android框架的設計。 – atreat

+0

我很高興你爲你的問題找到了一個「正確」的解決方案 - 有時很難在Android中看到它,但它總是很高興看到它發生:) –

0

你的問題對我來說並不清楚,據我的理解你需要顯示一個Alertdialog,每當設備的位置發生改變時,也會超出一個新的活動。我的建議是,當設備位置變化得到需要值時,捆綁它的意圖,並通過它開始一個新的activity.With捆綁還通過一個布爾標誌。如果布爾標誌爲true在新的活動顯示在onCreate Alertdialog框,我希望你會得到你想要的。這將根據我的理解,爲你做這件事是最好的方案。同時保持這些活動的歷史可能會影響應用程序,同時實現這一點。

+0

沒有一個活動處理位置的東西。基本上我有一個設置活動,用戶可以選擇「自動」的位置設置。發生這種情況時,位置管理器開始偵聽位置。每次活動開始時,位置管理器都會獲取更新的上下文。當Manager找到一個位置時,它使用該上下文顯示AlertDialog。這可能隨時發生。因此,如果應用程序即將更改活動,則對話框將出現在活動A上,然後在活動B啓動時被銷燬(與活動A一起)。 – atreat