2016-04-03 84 views
1

在android應用程序中,有多個片段的活動。 即使這些活動或片段不在backStack的頂部,並且接收來自不同服務的通知,這些活動或片段仍可以運行。如何製作一個sington對話框

當發生某些事件時,需要顯示一個對話框與用戶進行通信。堆棧頂部的活動或片段可能沒有該事件的處理程序。任何其他感興趣的活動或片段都應該向用戶打開一個對話框。

問題是監聽器中的活動和片段獨立處理事件不知道是否已經有相同的對話框顯示。

什麼是告訴處理程序是否應該打開對話框的最佳方式? 由於這個對話框對於同一個事件是相同的,所以它可能會有幫助,如果它可以作爲一個單身人士。

任何人都有建議如何使對話成爲這種情況的單身人士?

回答

1

由於對話框與當前視圖鏈接,因此無法制作Dialog singletone。而你目前的觀點可能會改變 - 對話可能會從活動的不同實例(一個或多個)中播種。

但是,您可以實現一個簡單的singletone類來存儲所有對話框數據 - 將數據保存到並在Dialog的onCreateView中檢索它。

因此,您將獲得包含所有數據的單例實例,但根據當前視圖,對話框可能會有所不同。

此外,您可以存儲一個鏈接到該singletone類中顯示的對話框。使用這種方法,您可以檢測到您的對話框是否顯示。

+0

謝謝Atrem!單個數據實例不是問題。與一個活動的上下文關聯的對話框是。在這種情況下,如果多個活動或片段收到顯示對話框的事件,則很難確定是否顯示對話框。也許使用singleTask或singleInstance開展一項活動可能有所幫助,有什麼想法? – lannyf

+0

我建議將鏈接保存到單個實例類中的對話框。在那個例子中,創建'ensureShowDialog(Context context)'方法。該方法將檢查當前是否顯示對話框。如果是,您可以顯示對話框。在另一個CASR中,您可以將新數據傳遞給對話框。 –

相關問題