android - OnSharedPreferenceChangeListener 未调用 #2

标签 android sharedpreferences

好吧,我开始从 Google 的 android 中实现这个可怕的代码。未调用 OnSharedPreferenceChangeListener。这是我的代码,请问有什么建议吗?

类定义:

private SharedPreferences sPrefs;
private PreferenceChangedListener prefsChangedListener;

我有一个私有(private)内部类:

private class PreferenceChangedListener implements
        OnSharedPreferenceChangeListener {

    public void onSharedPreferenceChanged(
            SharedPreferences sharedPreferences, String key) {
        if (key == "highThreshold") {
            try {
                highThreshold = Float.parseFloat(sharedPreferences
                        .getString(key, "0"));
            } catch (Exception e) {
            }
        }
    }
}

尝试在 OnResume 中使用以下代码并在“Voorkeuren”首选项 Activity 启动后注册监听器。两者都失败了。

sPrefs = getPreferences(MODE_PRIVATE);
prefsChangedListener = new PreferenceChangedListener(); 
sPrefs.registerOnSharedPreferenceChangeListener(prefsChangedListener );

我定义了一个扩展 PreferenceActivity 的类 Voorkeuren

public class Voorkeuren extends PreferenceActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_voorkeuren, menu);
        return true;
    }
}

我打开如下:

Intent intent = new Intent(getBaseContext(),Voorkeuren.class);
startActivity(intent);

该类显示良好,并在 session 之间存储值。但是如果设置有问题,我的应用程序不应该进行轮询。有任何想法吗?我有关于 SharedPreferences.Editor 的红色信息,但我不确定它是如何相关的。

最佳答案

不确定您的问题是什么以及需要什么。

但是您需要做一项更改。在 onResume 中替换它

sPrefs = getPreferences(MODE_PRIVATE);
prefsChangedListener = new PreferenceChangedListener(); 
sPrefs.registerOnSharedPreferenceChangeListener(prefsChangedListener );

sPrefs = PreferenceManager.getDefaultSharedPreferences(this);;
prefsChangedListener = new PreferenceChangedListener(); 
sPrefs.registerOnSharedPreferenceChangeListener(prefsChangedListener); 

在 onCreate() 中

关于android - OnSharedPreferenceChangeListener 未调用 #2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13633536/

相关文章:

android - 如何显示以前的 EditText 用户输入以及最近的 EditText 用户输入?

java - Android 搜索栏使用共享首选项保存进度值

android - 无法使用 SharedPreferences 更改文本

android - Android在WebView请求上加上X-Requested-With有什么好处?

java - 当 Firebase 中的值发生更改时,Sharedpreferences 值会更新

android - Android:如何让应用程序记住是否已按下静音按钮

android - 从 Eclipse 运行 Android Activity 单元测试的问题

android - GL_COLOR_MATERIAL 在 Android 上带有照明

android - BottomNavigationView 与 RecyclerView 垂直滚动的垂直滚动 CoordinatorLayout 行为

Android Studio - 无法从相机捕捉视频