Switch 调用 setChecked 触发 setOnChe

2020-03-18  本文已影响0人  yuGodddddd

当在设置 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);
上一篇 下一篇

猜你喜欢

热点阅读