有时需要在程序初始化界面时,我们需要将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)
本文介绍了一种解决在程序初始化界面时Switch组件触发onCheckedChanged监听器的问题的方法。通过判断按钮是否被按下,可以避免因初始化而重复触发监听。

205

被折叠的 条评论
为什么被折叠?



