2013-08-07 120 views
0

在我的Android應用程序中,我使用SharedPreferences讓用戶管理一些設置。現在,在用戶更改任何設置並從設置頁面返回到應用後,我希望我的視圖(片段)使用SharedPreferences中的最新值。反映設置更新視圖更新

更改可能包括重新加載自定義視圖以使用顏色方案或刪除列表視圖的過濾。

當前只有當應用程序重新啓動時,纔會應用所需的更改。我確信有辦法解決我的問題,但我無法弄清楚。

假設我支持Android 2.2及更高版本,因此任何較新的API都不能使用,除非它存在於支持庫中。

回答

1

不完全確定你的問題是什麼,但在我看來,當你的用戶改變一個設置,然後點擊後退按鈕返回到片段,你沒有看到更改?如果是這種情況,那是因爲當用戶返回時,android會恢復堆棧中的碎片(在做任何更改之前)的版本。我的建議是嘗試將新共享的prefs加載到片段的onResume方法。這樣他們應該在用戶返回時加載。

試試這個

@Override 
public void onResume(){ 
super.onResume(); 
setContentView(R.layout.currentFrag); 

} 

這應該用正確的改變重新加載頁面。

+0

更新了問題。你懷疑的和我的意圖是一樣的。我不清楚你給出的建議,但是,我目前不在我的碎片中啓動「首選項活動」,因爲它是一項全局活動,並非特定於碎片。 – midhunhk

+0

啊我明白了。那麼發生什麼事是當用戶改變他們的設置,然後點擊後退按鈕。該片段被重新加載,但在按下後退按鈕時,片段的oncreate不會被調用,因此該頁面永遠不會被重新加載,並且從未看到UI的更改。至少在頁面重新加載之前。 – KBusc

+0

謝謝了,讓我試試這個 – midhunhk

0

您需要使用onWindowFocusChanged方法來檢查當前活動是否失去焦點。

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    // TODO Auto-generated method stub 
    super.onWindowFocusChanged(hasFocus); 
    // Add the code to perform on the fragments after the settings have changed. 
}