java - 无法让 onSharedPreferenceChanged() 工作

标签 java android sharedpreferences android-preferences preferenceactivity

我想在用户从我的 preferenceActivity 中的 ListPreference 中选择特定项目时显示一个对话框。但是,我无法让 onSharedPreferenceChanged() 工作。我在方法的开头放了一个Toast,它没有显示,所以这个方法根本就没有跑完,这是为什么呢?

这是我的代码:(谢谢)

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
        String key) {

    Toast.makeText(Preferences.this, "prefs Changed", Toast.LENGTH_SHORT)
            .show();

    if (key.equals("boolean_ad_type")) {

        sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
        String value = sharedPreferences.getString("boolean_ad_type", "");
        if (value != null && value.equals("Pop-up Ads")) {

            Toast.makeText(Preferences.this, "Pop-up Ads Selected",
                    Toast.LENGTH_SHORT).show();
        }

    }
}

我是否需要在这样的 Activity 中实现它? (我试过有和没有,没有区别)

    public class Preferences extends PreferenceActivity 
                  implements OnSharedPreferenceChangeListener {

最佳答案

onSharedPreferenceChanged not fired if change occurs in separate activity?

public class MyActivity 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);
}

关于java - 无法让 onSharedPreferenceChanged() 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14386181/

相关文章:

java - 将Java编译器标志添加到android gradle项目中除 Protocol Buffer 之外的所有内容

java - 在同一个项目中需要不同版本的依赖

java - STRIKE_THRU_TEXT_FLAG 未按预期工作

android - 将 ArrayList 保存到 SharedPreferences

firebase - Flutter + SharedPreferences:如何使用FutureBuilder

java - 将图像 url 存储在共享首选项中并在 Recyclerview 中显示它们

java - 函数式编程 : How to carry on the context for a chain of validation rules

java - 使用javah创建.h文件,出现错误 "Could not find class file for NativeDemo"

java - 使用 android studio 将数据导出到 google 工作表 : How to transfer variables between activities?

c# - 隐藏 SuperSU 和 Kingo Root