2011-11-01 136 views
1

我的應用程序中有一個小問題AlertDialogs。所以這裏是我的情況:Android從非活動創建AlertDialog

我有一個Synchronization Acitivity哪一個是通過HttpURLConnection連接到一個web服務,並從不同的類解析它的結果。所以如果服務器的響應是某種錯誤,我有一個RPCErrorPacket這將處理,但它不是一個活動。整個響應的解析是在一個單獨的thread中完成的,我需要找到一種方法來從RPCErrorPacket創建一個AlertDialog,它將顯示在Synchronization Activity中。

任何想法,如果有可能,或者我該如何實現這樣的事情?

+0

你用AsyncTask打web服務嗎 – Karthi

+0

用這個'Context'做這個 –

回答

1

這裏是我正在做這個:

cancelDialog.dismiss(); // cancel the dialog which is already opened 
Looper.prepare(); // preparing the looper 
this.createDialog("Check your network settings!"); // creating the dialog with method 
Looper.loop(); // loop 
Looper.myLooper().quit(); // quit looper 
Synchronization.this.finish(); // finish activity 
1

如果我記得正確的話,讓服務或其他後臺任務調用用戶無法避免的東西被認爲是不好的做法。所以我建議你考慮改用notification。在那裏,你可以輕鬆地聲明,如果用戶點擊它會發生什麼。

如果您的線程實際上是您的活動的工作人員,則應該使用Android提供的其中一種方法在後臺執行異步內容,例如,一個AsyncTask

0

runOnUiThread(新的可運行{ 的run(){ // 這裏做需要的東西,如果需要通過活動情境 });

runOnUIThread是從非UI線程在UI線程上運行可運行的方法。

0

這是不好的做法,但你可以節省您的活動的一個靜態實例在其構造,那麼就傳遞上下文從實例到UI線程alertdailog ofcourse runOnUiThread(new runnable ....)