mix*_*kat 72 android preferenceactivity android-preferences sharedpreferences
我有一个扩展PreferenceActivity的类,并显示我的应用程序的首选项屏幕.是否可以检查是否对首选项进行了任何更改?
这有助于......
其他相关帖子: 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);
}
}
Run Code Online (Sandbox Code Playgroud)
tec*_*ces 64
做
SharedPreferences.OnSharedPreferenceChangeListener spChanged = new
SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
// your stuff here
}
};
Run Code Online (Sandbox Code Playgroud)
在你的PreferenceActivity,即使它成为你的PreferenceActivity类的成员,然后registerOnSharedPreferenceChangeListener(spChanged)在PreferenceActivity.onCreate()方法中.
这就是我的工作,我从来没有遇到过问题.
否则,你的监听器中的条件检查是错误的.发布代码.
编辑:
从您发布的代码中,您应该创建prefs一个类成员变量,以便它具有全局范围.
而prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());不是getSharedPreferences因为你没有创建该文件.
要创建您需要使用的文件PreferenceManager.要获得PreferenceManager,请使用Activity.getPreferenceManager().
Jon*_*han 64
在您的PreferenceActivity课程中,实现SharedPreferences.OnSharedPreferenceChangeListener界面.将所需onSharedPreferenceChanged方法添加到您的类并在其中注册onCreate.
请参阅示例代码:
public class MyPreferences extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.fw_preferences); //deprecated
PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
// handle the preference change here
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83024 次 |
| 最近记录: |