我有一个开关,可以通过在云上发送请求来启用/禁用硬件上的某些功能。 我需要以编程方式并且仅以编程方式更改开关的状态。但是,状态不会改变,除非交换机从硬件得到响应,告知请求已应用。 我尝试通过使用onCheckedChangeListener发送请求来进行尝试,但是当用户滑动手柄时,它会向前和向后移动。然后再次转发,当它收到响应时,即使用户尝试拖动它,也不应移动该处理程序,除非它收到响应。
这是我的代码:
mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(!doNotChange) {
mPresenter.sendEnableRequest(isChecked);
mySwitch.setChecked(!isChecked);
}
doNotChange = false;
}
});
然后,当我收到响应时,如果请求成功,我将更改开关的状态。
void onResponseReceieved() {
doNotChange = true;
mySwitch.setChecked(isChecked);
}