Dr.*_*cky 11 android android-preferences sharedpreferences
我想得到一个checkboxpreference的值.哪种方法适合倾听偏好?
OnPreferenceChangeListener和OnSharedPreferenceChangeListener之间有什么区别?
更新 为什么没有调用onSharedPreferenceChanged?
public class Setting extends PreferenceActivity implements
OnSharedPreferenceChangeListener // ,OnPreferenceChangeListener
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);// deprecated warning
}
@Override
public void onSharedPreferenceChanged(
SharedPreferences sharedPreferences, String key) {// DO Stuff
}
@Override
protected void onResume() {
super.onResume();
// getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
// PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this);
this.getSharedPreferences("myPrefDB", MODE_PRIVATE)
.registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onPause() {
super.onPause();
// getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
// PreferenceManager.getDefaultSharedPreferences(this).unregisterOnSharedPreferenceChangeListener(this);
this.getSharedPreferences("myPrefDB", MODE_PRIVATE)
.unregisterOnSharedPreferenceChangeListener(this);
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*ong 14
这些2之间的区别在于,OnPreferenceChangeListener是一种称为回调只有当其偏好的变化(适用于单个密钥),而OnSharedPreferenceChange是被称为每当回调任何在于所述偏好的SharedPreferences对象改变(适用于所有的键).
所以,在你的情况下,你需要使用OnPreferenceChangeListener你的CheckBoxPreference.
这是一个例子:
Preference ckboxPref = this.findPreference(CKBOX_PREF_KEY);
ckboxPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference,
Object newValue) {
//Do stuff
}
});
Run Code Online (Sandbox Code Playgroud)
findPreference如果您使用片段,该方法不起作用,但您没有使用任何片段,因此它很好.
| 归档时间: |
|
| 查看次数: |
8421 次 |
| 最近记录: |