【发布时间】:2014-02-16 18:24:36
【问题描述】:
我正在尝试完成这样的事情: 当我检查 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)。
有解决问题的想法吗?
【问题讨论】:
-
尝试返回true而不是switchedOn
标签: android preference checkboxpreference preferencefragment