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

}

Другие вопросы по тегам