Switch 控件 setChecked方法触发onCheckedChanged监听器问题

有时需要在程序初始化界面时,我们需要将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)

你可能感兴趣的:(Android,switch)