setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// How to check whether the checkbox/switch has been checked
// by user or it has been checked programatically ?
if (isNotSetByUser())
return;
handleSetbyUser();
}
});
如何实现方法isNotSetByUser()
发布于 2012-02-03 22:16:16
也许你可以检查一下isShown()?如果为TRUE -则为user。这对我很有效。
setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (myCheckBox.isShown()) {// makes sure that this is shown first and user has clicked/dragged it
doSometing();
}
}
});
发布于 2017-10-06 18:16:18
在onCheckedChanged()
中,只需检查用户是否确实已经checked/unchecked
了单选按钮,然后按如下所示执行相应的操作:
mMySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (buttonView.isPressed()) {
// User has clicked check box
}
else
{
//triggered due to programmatic assignment using 'setChecked()' method.
}
}
});
发布于 2015-07-06 23:13:07
您可以在以编程方式更改侦听器之前删除它,然后重新添加它,如以下SO post中所述:
https://stackoverflow.com/a/14147300/1666070
theCheck.setOnCheckedChangeListener(null);
theCheck.setChecked(false);
theCheck.setOnCheckedChangeListener(toggleButtonChangeListener);
https://stackoverflow.com/questions/9129858
复制相似问题