以编程方式更改选中状态后未调用 CheckBox onCheckedChanged?
CheckBox's onCheckedChanged not called after programatically changing checked state?
在我的代码中,我 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);
}
}
但是当使用方法 setChecked()
以编程方式更改检查值时,侦听器方法 onCheckedChanged
从未被调用,但是当用户通过显示更改它时,它被调用。这是正常行为还是我实施错误?
setOnCheckedChangeListener()
当这个按钮的选中状态改变时被调用。但是查看您的代码,复选框的状态似乎没有改变。
if (isConditionTrue) {
check_box.setChecked(true);
} else {
check_box.;
}
}
如果 isConditionTrue
为 false 且 check_box 已取消选中,则 setChecked(false)
不会导致调用 setOnCheckedChangeListener
不会被调用。同样适用于 check_box 已经检查并且您尝试 setChecked(true);
是的,这是正常现象。因为侦听器附加到复选框,当您在应用程序 ui 上更改它时,它会调用。但如果您以编程方式更改它,它将不会执行。
在我的代码中,我 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);
}
}
但是当使用方法 setChecked()
以编程方式更改检查值时,侦听器方法 onCheckedChanged
从未被调用,但是当用户通过显示更改它时,它被调用。这是正常行为还是我实施错误?
setOnCheckedChangeListener()
当这个按钮的选中状态改变时被调用。但是查看您的代码,复选框的状态似乎没有改变。
if (isConditionTrue) {
check_box.setChecked(true);
} else {
check_box.;
}
}
如果 isConditionTrue
为 false 且 check_box 已取消选中,则 setChecked(false)
不会导致调用 setOnCheckedChangeListener
不会被调用。同样适用于 check_box 已经检查并且您尝试 setChecked(true);
是的,这是正常现象。因为侦听器附加到复选框,当您在应用程序 ui 上更改它时,它会调用。但如果您以编程方式更改它,它将不会执行。