我有一个类扩展 PreferenceActivity 并显示我的应用程序的首选项屏幕。是否可以检查首选项是否有任何更改?
这有助于...
http://developer.android.com/reference/android/content/SharedPreferences.OnSharedPreferenceChangeListener.html http://developer.android.com/reference/android/content/SharedPreferences.OnSharedPreferenceChangeListener.html
其他相关帖子:SharedPreferences.onSharedPreferenceChangeListener 未被一致调用 https://stackoverflow.com/questions/2542938/sharedpreferences-onsharedpreferencechangelistener-not-being-called-consistently
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);
}
}
Do
SharedPreferences.OnSharedPreferenceChangeListener spChanged = new
SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
// your stuff here
}
};
In your PreferenceActivity
,即使其成为您的成员PreferenceActivity
上课然后做registerOnSharedPreferenceChangeListener(spChanged)
in the PreferenceActivity.onCreate()
method.
这就是我所做的,我从来没有遇到过问题。
否则,这是您在侦听器中进行的条件检查出了问题。发布代码。
EDIT:
根据您发布的代码,您应该prefs
类成员变量,因此它具有全局范围。
And do prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
代替getSharedPreferences
因为你还没有创建该文件。
要创建文件,您需要使用PreferenceManager
。为了得到一个PreferenceManager
, use Activity.getPreferenceManager()
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)