2010-04-13 80 views
13

我將試圖解釋一個簡單的應用場景:我的應用程序去正確的「主視圖」。在這個主視圖中,我插入了一個TextView,其中顯示了通過PreferenceManager創建的當前設置。爲了簡單起見,假設我在我的設置中有一個複選框。當我第一次啓動我的應用程序 - 我的主視圖上的TextView顯示我的複選框設置正確(true)。現在我進入設置菜單,彈出窗口,然後將其更改爲false。我回到主視圖,看到沒有改變。即使將其改爲假,它仍然是真實的。如果我結束了應用程序,然後重新啓動它 - 一切都很好,它顯示了我的變化。改變首選項(設置),文本顯示設置不更新後

顯然,當我改變設置時,主視圖只是留在背景中?如何在更改設置後重新繪製或更新主視圖?

回答

5

當您進入您的首選項時,您當前的活動應暫停,並在您返回時恢復(請參閱lifecycle diagram on the android site的生命週期圖)。你應該能夠從onResume()內引發某種重繪。這將允許頁面上的數據重新填充。某種形式的invalidate()調用可以做到這一點我猜。

+0

感謝您的幫助,我會開始考慮這個現在 - 我很欣賞你時間! – Allan 2010-04-13 23:16:49

+0

我是一個初學者,所以我希望這不是對我來說太難了 - (我會不會從其他人更多的幫助和例子太) – Allan 2010-04-13 23:25:57

22

你可以在你的主要活動實施OnSharedPreferenceChangeListener

@Override 
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { 
    if (PREFKEY_OF_INTEREST.equals(key)) 
     updateSomethingInMainView(); 
} 

和的onCreate()調用:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
prefs.registerOnSharedPreferenceChangeListener(this); 
+0

謝謝大家對我的幫助。那onResume做了竅門! – Allan 2010-05-15 00:09:35