如何检测是否在首选项中进行了更改? [英] How to detect if changes were made in the preferences?
问题描述
我有一个类可以扩展 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?
这有助于...
其他相关帖子: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屋!