gpt4 book ai didi

Android:在选中/取消选中其他 CheckBoxPreference 时显示/隐藏首选项

转载 作者:太空宇宙 更新时间:2023-11-03 13:25:14 26 4
gpt4 key购买 nike

我正在尝试完成这样的事情:当我检查 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)。

有解决问题的想法吗?

最佳答案

做这样的事情行不通吗?

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;
}
});

关于Android:在选中/取消选中其他 CheckBoxPreference 时显示/隐藏首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21355033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com