Android 复选框';以编程方式更改选中状态后,是否未调用s onCheckedChanged?

Android 复选框';以编程方式更改选中状态后,是否未调用s onCheckedChanged?,android,android-checkbox,Android,Android Checkbox,在我的代码中,在将初始值设置为复选框之前,Isetoncheckedchangelister,但在设置初始值之后,未调用侦听器方法: final CheckBox check_box = convertView.findViewById(R.id.check_box); check_box.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override

在我的代码中,在将初始值设置为
复选框之前,I
setoncheckedchangelister
,但在设置初始值之后,未调用侦听器方法:

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 
}
}
在上述行之后,我将初始值设置为复选框,如下所示

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

但是,当使用方法
setChecked()
以编程方式更改检查值时,监听器方法
onCheckedChanged
从未调用过,但当用户通过display对其进行更改时,将调用它。这是正常行为还是我错误地实现了它?

setOnCheckedChangeListener()
在该按钮的选中状态更改时被调用。然而,看看您的代码,复选框的状态似乎并没有改变

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

如果
isConditionTrue
为false且复选框已取消选中,则
setChecked(false)
不会导致调用
setoncheckedchangedlistener
。同样适用于已选中的复选框,您尝试
setChecked(true)

是的,这是正常的行为。因为侦听器附加到复选框,所以当您在应用程序ui上更改它时,它将调用。但如果您以编程方式更改它,它将不会执行

复选框的初始状态是什么?检查是否未检查?
isConditionTrue
的值是多少?尝试将其从checked更改为selected您的建议似乎正确,这要感谢它的默认状态是unchecked&我将其设置为setChecked(false),这导致它无法调用侦听器方法,谢谢:)@pcj太棒了!享受编码:-)