你不需要實施OnSharedPreferenceChangeListener
。這是一種方便的功能。
有時您想立即對偏好做出改變。例如,如果您有一個「設置」操作,用戶可以(例如)更改活動的背景顏色,那麼當用戶進行選擇時,您希望立即更改背景顏色,而不是在用戶重新啓動時活動。一種方法是讓活動檢查onResume()
中的後臺首選項的狀態,但另一種方法是讓活動註冊OnSharedPreferenceChangeListener
,onStart
和(取消其在onStop
中的註冊)。我發現以這種方式使用監聽器有時會導致更簡單的代碼。當應對設置更改作出反應的代碼通常不參與框架的生命週期方法時,它也有很大幫助。
實施OnSharedPreferenceChangeListener
非常簡單。您只需要將您的課程聲明爲implements OnSharedPreferenceChangeListener
或者實現一個對象。例如:
public class MyActivity extends Activity {
. . .
private final OnSharedPreferenceChangeListener mPrefsListener =
new OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key)
{
if (key.equals(IMPORTANT_PREF_KEY)) {
setImportantValue(sharedPrefs.getInt(IMPORTANT_PREF_KEY, -1));
}
}
};
@Override
protected void onStart() {
super.onStart();
PreferenceManager.getDefaultSharedPreferences(this)
.registerOnSharedPreferenceChangeListener(mPrefsListener);
}
@Override
protected void onStop() {
super.onStop();
PreferenceManager.getDefaultSharedPreferences(this)
.unregisterOnSharedPreferenceChangeListener(mPrefsListener);
}
void setImportantValue(int value) {
. . .
}
}
讓我們說一旦用戶更改任何內容,您將更改您的PreferenceActivity/Fragment內的偏好說明。那麼你可以使用它... – Opiatefuchs 2014-09-29 14:16:14
如果你不需要它,不要使用它。 – 323go 2014-09-29 14:33:13