如何检测是否在首选项中进行了更改? [英] How to detect if changes were made in the preferences?

查看:26
本文介绍了如何检测是否在首选项中进行了更改?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个类可以扩展 PreferenceActivity 并显示我的应用程序的首选项屏幕.是否可以检查首选项是否有任何更改?

I have a class that extends PreferenceActivity and shows the preference screen of my app. Is it possible to check if any changes were made to the preferences?

这有助于...

http://developer.android.com/reference/android/内容/SharedPreferences.OnSharedPreferenceChangeListener.html

其他相关帖子:SharedPreferences.onSharedPreferenceChangeListener 未被一致调用

public class PreferenceClass extends PreferenceActivity {

    OnSharedPreferenceChangeListener listener;

    public void onCreate(Bundle savedInstanceState) {
        SharedPreferences prefs = this.getSharedPreferences("settings", 0);
        listener = new SharedPreferences.OnSharedPreferenceChangeListener() {

            public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
                int flag = 1;
            }
        };
        prefs.registerOnSharedPreferenceChangeListener(listener);
        super.onCreate(null);
        addPreferencesFromResource(R.xml.settings);
    }
}

推荐答案

SharedPreferences.OnSharedPreferenceChangeListener spChanged = new
                           SharedPreferences.OnSharedPreferenceChangeListener() {
            @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
            String key) {
        // your stuff here
    }
};

在您的 PreferenceActivity 中,即使其成为您的 PreferenceActivity 类的成员,然后在 PreferenceActivity 中执行 registerOnSharedPreferenceChangeListener(spChanged).onCreate() 方法.

In your PreferenceActivity, ie make it a member of your PreferenceActivity class and then do registerOnSharedPreferenceChangeListener(spChanged) in the PreferenceActivity.onCreate() method.

这就是我所做的,我从来没有遇到过问题.

That's what I do and I never have a problem.

否则是您在侦听器中的条件检查有问题.贴上代码.

Else it's your conditional checking in the listener that is at fault. Post the code.

根据您发布的代码,您应该将 prefs 设为类成员变量,以便它具有全局作用域.

From the code you posted, you should make prefs a class member variable so it has a global scope.

然后做 prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 而不是 getSharedPreferences 因为你还没有创建那个文件.

And do prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); instead of getSharedPreferences because you haven't created that file.

要创建文件,您需要使用 PreferenceManager.要获得 PreferenceManager,请使用 Activity.getPreferenceManager().

To create a file you need to use PreferenceManager. To get a PreferenceManager, use Activity.getPreferenceManager().

这篇关于如何检测是否在首选项中进行了更改?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆