3

我正在尝试向我的应用程序添加设置。我已经添加了新设置,但我不知道该放在哪里OnSharedPreferenceChangeListener。我把它放在活动中并添加了一个Log.d(),但Log.d()从未触发过。有任何想法吗?

4

2 回答 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 回答