是否有任何解决方法可以帮助我以编程方式更改状态
使用switch.setChecked(true);
切换小部件而不触发OnCheckedChangedlistener()
。
switch.setChecked(true);
自动触发OnCheckedChangedlistener()
,但我需要在用户手动更改状态时触发,所以我需要停止发光
switch.setChecked(true);
已触发OnCheckedChangedlistener()
任何想法都是适应的。
答案 0 :(得分:1)
您可以先删除该侦听器,然后再将其设置为。
switch.setOnCheckChangedListener(null);
switch.setChecked(true);
switch.setOnCheckChangedListener(mOnCheckChangedListener);
答案 1 :(得分:1)
2种方式:
每当您以编程方式进行更改时,请维护一个布尔变量并将其设置为true。在OnCheckedChangeListener()中,检查是来自用户还是以编程方式。
(不推荐)在以编程方式更改之前,请将您的Swtich.setOnCheckedChangeListener(null)设置为null。然后在下一行再次设置你的听众
答案 2 :(得分:0)
我使用setOnClickListener()
代替setOnCheckedChangeListener()
解决了这个问题,然后我可以在点击监听器中使用isChecked
来了解是否检查了Switch
,例如:
switchView.setOnClickListener {
val isChecked = switchView.isChecked
// Do something with the check status
}