我试图完成这样的事情:当我检查CheckboxPreference时当我取消选中" a",偏好'b'隐藏...
一般而言,它应该像依赖一样工作,而不仅仅是启用/禁用偏好B,还可以隐藏它。
这就是我想到的:
prefA = (CheckBoxPreference)findPreference("preference_A");
prefA.setChecked(false);
prefB = findPreference("preference_B");
category.removePreference(prefB);
prefA.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
boolean switchedOn = (Boolean)newValue;
if (switchedOn)
{
Log.d("pref_test", "prefA checked");
category.addPreference(prefB);
}
else
{
Log.d("pref_test", "prefA UNchecked");
prefB = findPreference("preference_B");
category.removePreference(prefB);
}
return switchedOn;
}
});
prefa和prefb早些时候已定义为偏好段类字段。
问题在于它仅在2个点击时工作正常,我的日志说:
prefA checked
prefA UNchecked
prefA UNchecked
就像是两次打电话给OnPreferenceChangeListener进行取消选中(显然导致.removePreference(prefb)方法返回null)。
解决问题的想法?
它会做这样的事情吗?
prefA = (CheckBoxPreference)findPreference("preference_A");
prefA.setChecked(false);
prefB = findPreference("preference_B");
category.removePreference(prefB);
prefA.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
boolean switchedOn = (Boolean)newValue;
if (switchedOn) {
Log.d("pref_test", "prefA checked");
category.addPreference(prefB);
} else {
Log.d("pref_test", "prefA UNchecked");
prefB = findPreference("preference_B");
category.removePreference(prefB);
}
return true;
}
});