Android Switch Compat State Issue
Я хочу изменить состояние дочерних переключателей от родительского переключателя.
вкратце:
case 1: Parent on -> all Child включается
случай 2: родитель выключен -> все дети выключаются
случай 3: ребенок 2 выключен (ребенок 1 и 3 включен) -> родитель включен
Проблема Когда я вкл / выкл все дочерние переключатели Родительский переключатель должен вкл / выкл соответственно.
ниже мой код в случае кода 1,2 и 3 работает нормально.
switchParent.setOnCheckedChangeListener (new 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 void setState () {
if (switchChild1.isChecked() || switchChild2.isChecked() || switchChild3.isChecked()) {
switchParent.setChecked(true);
} else {
switchParent.setChecked(false);
}
}
Я буду признателен за любую помощь.
1 ответ
Измените ваш метод setState().
private void setState() {
if (switchChild1.isChecked() && switchChild2.isChecked() && switchChild3.isChecked()) {
switchParent.setChecked(true);
} else {
switchParent.setChecked(false);
}
}