在以编程方式更改选中状态后,CheckBox的onCheckedChanged未被调用?

时间:2018-06-10 08:34:03

标签: android android-checkbox

在我的代码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 :(得分:2)

当此按钮的选中状态发生变化时,将调用

setOnCheckedChangeListener()。但是看看你的代码,看起来复选框的状态可能没有改变。

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

如果isConditionTrue为false且check_box已取消选中,则setChecked(false)将不会导致setOnCheckedChangeListener的调用不会被调用。同样适用于已经选中的check_box,您尝试setChecked(true);

答案 1 :(得分:-1)

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