你不需要实施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