2010-06-25 16 views
2

我試圖保持與內容提供者中的值同步的布爾首選項,並且除了此問題之外很好地成功。當我在我的PreferenceActivityonResume()方法中設置首選項時(因爲該值可能在內容提供商中已更改),視圖中的複選框仍會反映前onResume值。當PreferenceActivity.onResume中的首選項發生更新時更新視圖(Android)

就我而言,這種偏好可能完全是虛擬的而不是持續的,但是如果它需要堅持輪子轉彎就沒問題了。最終目標是在我的應用程序首選項中的一個複選框,它反映並更新內容提供者中的值。

回答

0

我懷疑PreferenceActivity首先設置onRestoreInstanceState()方法中的複選框,然後onResume()方法在生命週期的後面調用。雖然您更改了首選項值,但複選框同步代碼已完成。

因此,也許你可以覆蓋onRestoreInstanceState(),更新首選項值,然後最後調用super.onRestoreInstanceState()

+0

每次活動返回到可見性時,onRestoreInstanceState()都會被調用嗎?我有這樣的印象,它可以從onPause()直接到onResume()。 – loganj 2010-06-25 17:11:46

+0

沒有骰子。看起來像onRestoreInstanceState()從暫停回來時沒有被調用。 – loganj 2010-06-25 17:25:29

+0

看起來沒有更改監聽器使用'SharedPreferences'註冊,所以當您直接編輯'Preference'時,UI層從不會聽到它。我會留下來的。 – loganj 2010-06-28 14:47:13

相關問題