OnCheckedChanged CheckBox не вызывается после программно меняющегося состояния проверки? - PullRequest
0 голосов
/ 10 июня 2018

В моем коде I setOnCheckedChangeListener до установки начального значения на CheckBox, но метод слушателя не вызывается после установки начального значения:

final CheckBox check_box = convertView.findViewById(R.id.check_box);

check_box.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

// Some logic 
}
}

После строки выше, я установил начальное значение наCheckBox следующим образом:

if (isConditionTrue) {
            check_box.setChecked(true);
        } else {
            check_box.setChecked(false);
        }
}

Но метод слушателя onCheckedChanged никогда не вызывался, когда программно изменял значение проверки с помощью метода setChecked(), но когда пользователь изменяет его с помощью дисплея, он вызывается.Это нормальное поведение или я неправильно его реализовал?

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Да, это нормальное поведение.Поскольку слушатель прикреплен к флажку, при изменении его в интерфейсе приложения он будет вызываться.Но если вы измените его программно, он не будет выполнен.

0 голосов
/ 10 июня 2018

setOnCheckedChangeListener() вызывается, когда проверяется состояние этой кнопки.Однако, глядя на ваш код, похоже, что состояние флажка может не измениться.

if (isConditionTrue) {
            check_box.setChecked(true);
        } else {
            check_box.;
        }
}

Если isConditionTrue имеет значение false и check_box уже не отмечен, то setChecked(false) не приведет квызов setOnCheckedChangeListener не будет вызван.То же самое относится и к уже установленному флажку check_box, и вы пытаетесь setChecked(true);

...