2011-12-07 30 views
0

我已經讀過,前臺活動嘗試在後臺交流/操作活動是不好的做法,並且通常應該使用onResume函數。通知一個活動,它需要進行更新

所以我有一個活動,讓用戶添加一個「最喜歡的」事情。還有一項活動顯示了所有收藏的東西的清單。而不是每次查詢數據庫並重建列表onResume時,我使用一個類只有靜態標誌,如「favorites_updated」,如果它是真的,onResume我們做額外的工作 - 如果它是假的,我們不打擾。

這感覺有點笨重 - 有沒有更像現在這樣的做法?

TYIA。

回答

0

您也可以在後臺活動中爲收藏列表中的更改創建一個列表程序,並在更改時通知您的後臺活動。

這種方法有一個好處,因爲你的代碼沒有太多的onResume變化。

+0

這將如何工作? (我在Android環境中的第一週)聽衆是否需要活動之間的參考?你是否有一些僞代碼或鏈接或其他可以說明前提的東西? – momo

+0

用方法notifyChage(params)創建一個列表程序說FavoriteChangeListner。然後在您希望實施更改的活動中實施此列表器。 –

+0

用方法notifyChage(params)創建一個列表程序說FavoriteChangeListner。然後在您希望實施更改的活動中實施此列表器。之後,當需要調用notifyChage(params)時,註冊到列表器和子活動。我會盡快發佈代碼。請通過[鏈接](http://tseng-blog.nge-web.net/blog/2009/02/17/how-implement-your-own-listener-android-java/)。 –

0

如果你總是從ListActivity導航 - > FavoritesActivity,你可以使用

startActivityForResult (Intent intent, int requestCode) . 

如果用戶改變有收藏推出從ListActivity的FavoritesActivity,傳遞一個布爾值 '更新' 回用

setResult (int resultCode, Intent data) 

然後將其收回到ListActivites中

onActivityResult(int requestCode, int resultCode, Intent data) 

如果t他布爾是真的,重新查詢你的光標。

另一種選擇是更新您在FavoritesActivity中編寫的SharedPreference,然後在ListActivity中讀取(很像靜態變量)。

+0

感謝您的回覆。實際上,我從不從活動中啓動ListActivity以將項目添加到該列表。所以靜態標誌的東西可能與我要得到的一樣近? – momo

+0

是的,但考慮使用SharedPreferences而不是靜態變量,意識到它們可以被清除。 – Freddroid

0

我使用get/putExtras在啓動活動時使用Intent傳遞附加參數。但是,由於當前的問題更多的是關於在活動中保留一個持久狀態,而不是關於消息傳遞,所以我會+1與靜態變量共享首選項。

http://developer.android.com/guide/topics/data/data-storage.html#pref http://www.balistupa.com/blog/2009/08/passing-data-or-parameter-to-another-activity-android/

0

創建一個聽者說FavoriteChangeListner與方法notifyChage (params)。然後在您希望實施更改的活動中實施此列表器。之後,當需要調用notifyChage(params)時,註冊到列表器和子活動。我會盡快發佈代碼。請通過this尋求幫助。

相關問題