Switch 调用 setChecked 触发 setOnCheckedChangeListener 解决

当在设置 setOnCheckedChangeListener 之后调用 setChecked方法会触发 setOnCheckedChangeListener 监听.

解决方案

  1. 判断按钮是否被人按下.
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

  1. 在设置之前取消监听,设置后添加监听.
mSwitch.setOnCheckedChangeListener(null);
mSwitch.setChecked(true);
mSwitch.setOnCheckedChangeListener(mListener);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容