當在設置 setOnCheckedChangeListener
之后調(diào)用 setChecked
方法會觸發(fā) setOnCheckedChangeListener
監(jiān)聽.
解決方案
- 判斷按鈕是否被人按下.
mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (!buttonView.isPressed()) {
return;
}
doSomeThing();
}
});
此問題參考StackOverFlow(http://stackoverflow.com/questions/9129858/how-can-i-distinguish-whether-value-is-changed-by-user-or-programmatically-incl)
- 在設置之前取消監(jiān)聽,設置后添加監(jiān)聽.
mSwitch.setOnCheckedChangeListener(null);
mSwitch.setChecked(true);
mSwitch.setOnCheckedChangeListener(mListener);