每当我尝试添加此行时,它都会崩溃我的应用。我不是把它放在正确的位置吗?
preferences.registerOnSharedPreferenceChangeListener(myActivity.this);
这是我的班级
class Simulation extends View {
// I declare my program variables here
public Simulation(Context context) {
super(context);
// get the preferences
SharedPreferences preferences = PreferenceManager
.getDefaultSharedPreferences(context);
preferences
.registerOnSharedPreferenceChangeListener(myActivity.this);
String storedPreference = preferences.getString("nPref", "0");
}
public void onSharedPreferenceChanged(
SharedPreferences sharedPreferences, String key) {
Log.i(TAG, "preferences changed!");
}
}
谢谢!
答案 0 :(得分:15)
这样做
SharedPreferences.OnSharedPreferenceChangeListener prefListener =
new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs,
String key) {
if (key.equals("date")) {
}
}
};
和
preferences.registerOnSharedPreferenceChangeListener(prefListener);
答案 1 :(得分:13)
关于答案的一个注意事项,prefListener需要是一个类字段,而不是一个局部变量,否则它可能会被垃圾收集。
SharedPreferences.onSharedPreferenceChangeListener not being called consistently