2014-02-06 162 views
0

我想創建ListPreference,它在更改時還會重新加載其他ListPreference對象的值。我試圖通過調用:SharedPreferences依賴關係

if(key.equals("important_pref")) { 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putString("some_pref", "some_val"); 
    editor.apply(); 
} 

in onSharedPreferenceChanged函數。

它做的工作,但我需要重新加載首選項屏幕來查看效果。有沒有辦法避免這種情況,並立即重新加載值?

我的猜測是我不能這樣做,因爲第一次提交需要在更改其他內容之前結束。

回答

0

這是一個非常普遍的要求,我不敢實現。您必須通過像setPreferencesScreen(null);這樣的黑客重新加載屏幕,或者(更好地)註冊SharedPreferencesChanged偵聽器並手動更新前導。請參閱:update preferences values after changing them programatically

在你的情況,如果在現有的SharedPreferencesChanged監聽條款,以「聽」的"some_pref"偏好的變化和手動更新顯示的值,你應該添加。