Android将OnPreferenceChangeListener添加到MultiSelectListPreference(MSLP)会停止MSLP的工作
我的最小SDK是Android 4.0。当我尝试将OnPreferenceChangeListener添加到MultiSelectListPreference时,它会阻止MSLP存储更改的值。没有监听器,它工作得很好,即使我的代码被注释掉,它似乎也失败了Android将OnPreferenceChangeListener添加到MultiSelectListPreference(MSLP)会停止MSLP的工作,android,debugging,listener,Android,Debugging,Listener,我的最小SDK是Android 4.0。当我尝试将OnPreferenceChangeListener添加到MultiSelectListPreference时,它会阻止MSLP存储更改的值。没有监听器,它工作得很好,即使我的代码被注释掉,它似乎也失败了 private void init () { MultiSelectListPreference multiSelectListPref = (MultiSelectListPreference) findPreference("rep
private void init () {
MultiSelectListPreference multiSelectListPref = (MultiSelectListPreference) findPreference("repeat_days");
if (multiSelectListPref != null) {
/* Works fine if this is commented out
multiSelectListPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
//formatSummary((MultiSelectListPreference) preference, newValue);
return false;
}
});*/
}
}
我需要知道用户何时更改信息。我看到了这种反应
但我似乎连这个都做不到
感谢您的帮助,提前谢谢 你可以在这里查看谷歌的代码()。相关的方法是:
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
if (positiveResult && mPreferenceChanged) {
final Set<String> values = mNewValues;
if (callChangeListener(values)) {
setValues(values);
}
}
mPreferenceChanged = false;
}
@覆盖
受保护的无效onDialogClosed(布尔正结果){
super.onDialogClosed(阳性结果);
if(正结果和mPreferenceChanged){
最终设定值=MNEW值;
if(callChangeListener(值)){
设置值(值);
}
}
mPreferenceChanged=false;
}
因此,当您在onPreferenceChange()方法中返回false时,您显式地告诉它不要保存更新的值。返回true,这应该满足您的期望
其他SO帖子表明,在不同SDK级别的首选项实现中存在各种错误。YMMV