在不触发OnCheckChanged侦听器的情况下更改开关的状态

时间:2018-01-16 13:24:41

标签: android

是否有任何解决方法可以帮助我以编程方式更改状态 使用switch.setChecked(true);切换小部件而不触发OnCheckedChangedlistener()

switch.setChecked(true);自动触发OnCheckedChangedlistener(),但我需要在用户手动更改状态时触发,所以我需要停止发光 switch.setChecked(true);已触发OnCheckedChangedlistener()

任何想法都是适应的。

3 个答案:

答案 0 :(得分:1)

您可以先删除该侦听器,然后再将其设置为。

switch.setOnCheckChangedListener(null);
switch.setChecked(true);
switch.setOnCheckChangedListener(mOnCheckChangedListener);

答案 1 :(得分:1)

2种方式

  1. 每当您以编程方式进行更改时,请维护一个布尔变量并将其设置为true。在OnCheckedChangeListener()中,检查是来自用户还是以编程方式。

  2. (不推荐)在以编程方式更改之前,请将您的Swtich.setOnCheckedChangeListener(null)设置为null。然后在下一行再次设置你的听众

答案 2 :(得分:0)

我使用setOnClickListener()代替setOnCheckedChangeListener()解决了这个问题,然后我可以在点击监听器中使用isChecked来了解是否检查了Switch,例如:

switchView.setOnClickListener {
    val isChecked = switchView.isChecked

    // Do something with the check status
}