我正在尝试为我的应用添加设置。我添加了新设置,但我不确定将OnSharedPreferenceChangeListener
放在哪里。我把它放在活动中并添加了Log.d()
,但Log.d()
从未被触发。有什么想法吗?
答案 0 :(得分:3)
根据Android Settings doc的最佳位置是:
@Override
protected void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences()
.registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences()
.unregisterOnSharedPreferenceChangeListener(this);
}
你应该将监听器存储在一个字段变量中(或者使用Activity对象本身 - 如上面的源代码所示),这样它就不会被垃圾收集。
即。匿名类对象不能用作OnSharedPreferenceChangeListener
。
答案 1 :(得分:0)
您需要通过调用setOnPreferenceChangeListener
来注册您的侦听器。我将假设您有一个扩展PreferenceActivity的Activity类。如果是这样,这是听众的最佳场所。你会写这样的东西:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);
Preference myPreference = findPreference("my_pref");
myPreference.setOnPreferenceChangeListener(this);
}