我想从父开关更改子开关的状态。
简而言之:
情况 1:父打开 -> 所有子打开
case 2: Parent off -> all Child switches off
情况 3:子 2 关闭(子 1 和 3 打开)-> 父打开
Issue When i on/off all child switches Parent switch should on/off accordingly.
下面是我的代码 在代码案例 1、2 和 3 中工作正常。
switchParent.setOnCheckedChangeListener(新 CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if (b) {
switchChild1.setChecked(true);
switchChild2.setChecked(true);
switchChild3.setChecked(true);
} else {
switchChild1.setChecked(false);
switchChild2.setChecked(false);
switchChild3.setChecked(false);
}
}
}); switchChild1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
setState();
}
});
switchChild2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
setState();
}
});
switchChild3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
setState();
}
});
setState()
私有(private)无效 setState() {
if (switchChild1.isChecked() || switchChild2.isChecked() || switchChild3.isChecked()) {
switchParent.setChecked(true);
} else {
switchParent.setChecked(false);
}
}
我将不胜感激任何帮助。
最佳答案
更改您的 setState() 方法。
private void setState() {
if (switchChild1.isChecked() && switchChild2.isChecked() && switchChild3.isChecked()) {
switchParent.setChecked(true);
} else {
switchParent.setChecked(false);
}
关于Android Switch 兼容状态问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34939629/