我试图完成这样的事情: 当我检查CheckBoxPreference'A'时,其他首选项('B')显示在A下方, 当我取消选中'A ',首选项'B'隐藏...Android:显示/隐藏偏好检查/取消选中其他CheckBoxPreference
因此,一般来说,它应该像依赖项一样工作,但不仅启用/禁用首选项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)。
解决此问题的任何想法?
+0
尝试返回的真正替代switchedOn –