你可以通过这种方式实现。您需要在 中注册您的听众并在中onResume
注销onPause
。这样,当您的活动被创建时,它不会被调用,因为首选项值的初始更改已经发生。
public class SettingsActivity extends PreferenceActivity
implements OnSharedPreferenceChangeListener {
@Override
protected void onResume() {
super.onResume();
// Set up a listener whenever a key changes
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onPause() {
super.onPause();
// Unregister the listener whenever a key changes
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
// Let's do something a preference value changes
}
}