2011-11-25 85 views
1

我有兩個活動「EventsList」,它擴展了ListView和一個「CreateEvent」活動。用戶可以從列表中選擇「事件」並在CreateEvent活動中編輯它們。當用戶點擊保存CreateEvent時,會產生一個AsycTask將數據傳遞給Web服務,獲取響應並將響應解析到數據庫中。從AsyncTask更新一個列表視圖產生在另一個活動

我的問題是我不知道如何將結果從AsycTasks onPostExecute()傳達給EventsList活動。我試着刷新StartActivityForResult的列表,但是這個線程通常還沒有完成。

那麼,如何將AsyncTask(由CreateEvent產生)的結果傳遞給EventsList活動?我沒有嘗試使用自定義回調。

Activity Interaction Diagram

編輯

我真的不熱衷於使用全局標誌或adapter。我確信這最好是用某種方式使用回調/監聽器完成的。這樣,只有在絕對必要時纔會更改或通知列表。

+0

StartActivityForResult()似乎是更好的方法。可能的解決方法是在您的CreateEventActivity中,在啓動AsyncTask後不要立即返回EventsListActivity,而是顯示用戶ProgressDialog,等待AsyncTask完成,在CreateEventActivity中設置setResult(),然後返回EventsListActivity,不確定這是否工作正常值得去嘗試。 – yorkw

回答

0

我覺得如果你在AsyncTask填寫list adapter of EventsList活動的數據(如適配器具有全球參考)和的AsyncTask的onPostExecute()只是finish() the CreateEvent activity現在借給你EventsList's onActivityResult()在這個只需要調用notifydatasetChanged() for adapter

+0

我可以使適配器全球化,但它似乎有點不合格(我仍然可以做到這一點)。 onActivityResult不起作用,因爲當CreateEvent活動完成時,AsnycTask通常還沒有完成。回電不是更好的選擇嗎? – JonWells

0

from EventsList startActivityForResult「CreateEvent」。

裏面的異步任務把數據putExtra的情況下,你想傳輸大或複雜的dataType使用應用程序級別的數據存儲或靜態實例。

onActivityResult of EventsList通過putExtra或靜態意圖讀取數據。

0

您可以隨時使用BroadcastReceiver,並從您的AsyncTask的onPostExecute()廣播一個完成操作,以及您希望活動接收的任何附加內容。如果您需要在結果中傳遞對象,請創建一個實現Parcelable的模型對象,並將Parcelable作爲附加意圖發送。

相關問題