我正在尝试向我的应用程序添加设置。我已经添加了新设置,但我不知道该放在哪里OnSharedPreferenceChangeListener
。我把它放在活动中并添加了一个Log.d()
,但Log.d()
从未触发过。有任何想法吗?
问问题
2186 次
2 回答
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
.
于 2015-01-29T12:58:52.063 回答
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);
}
于 2012-05-30T00:51:55.040 回答