我试图完成这样的事情:当我检查 CheckBoxPreference 'A' 时,另一个首选项('B')显示在 A 下面,当我取消选中'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 之前已被定义为 PreferenceFragment 类字段。
问题是它只适用于 2 次点击,我的日志说:
prefA checked
prefA UNchecked
prefA UNchecked
就像它调用 onPreferenceChangeListener 两次以取消选中(显然导致 .removePreference(prefB) 方法返回 null)。
关于解决问题的任何想法?