有时需要在程序初始化界面时,我们需要将Switch 或者继承Switch 的View进行初始化,此时会发现,当setChecked时会触发onCheckedChanged监听器,导致这部分代码被调用两次。解决方法时区分开人为点击和setChecked,在监听器中加入一个判断,是否按下:
@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)