2011-11-01 83 views
0

我與此堆棧,我試圖使用TabLayout創建應用程序。我有3個選項卡(3個不同的活動)。我也有服務,讀取我的GPS位置 - 工作正常。我得到了發佈到Web服務器用戶位置的線程 - 適用於。Android:如何從線程顯示自定義對話框

現在我試圖創建線程,詢問Web服務器,如果有任何消息的用戶。如果有 - 線程嘗試顯示自定義對話框(2文本視圖和畫廊 - 它的工作原理,如果我通過點擊按鈕從活動開始的行動),並有問題開始我知道我不能更新UI線程不同於主線程,但我不知道如何解決這個問題。我試圖使用AsyncTask - 失敗 - 我不想將AsyncTask分配給特定的Activity作爲內部私有類。

我希望我可以顯示我的自定義對話框,無論用戶當前正在使用哪個選項卡。

線程工作正常,但如何顯示該對話框。

我讀了關於runOnUIThread,但不知道如何使用它。

任何想法,任何類似的例子??

+0

下一個問題。如果我在一個Activity「A」中啓動線程,並將Tab和其他活動「B」更改爲頂層,並且Activity「A」的處理程序接收msg以更新UI,會發生什麼情況。 –

回答

0

使用runOnUiThread很簡單。

YourActivity.this.runOnUiThread(new Runnable() { 
    public void run() { 
     YourActivity.this.showDialog(CUSTOM_DIALOG_ID); 
    } 
} 
+0

不可以在範圍 –

+0

中訪問MyActivity類型的封閉實例。哦,這段代碼應該已經發布到活動類的內部線程類中。如果你可以得到你的活動的參考,只需把它給線程。 – Jong

0
+0

所以我需要在我的主題中使用處理程序,並在每個活動中使用處理程序? –

+0

不,請使用AsyncTasks通知每個活動中定義的處理程序。 http://developer.android.com/resources/articles/painless-threading.html – James

+0

如果我在每個Activity中創建Handler,我的處理Th​​read的Handler會知道誰發送msg來更新UI。 –