CompoundButton调用setChecked多次触发onCheckedChanged

CompoundButton调用setChecked多次触发onCheckedChanged问题当我们只想改变CompoundButton的状态时,setChecked会出现onCheckedChanged的情况。原因源码可见只要CompoundButton设置了setOnCheckedChangeListener,就会再每次调用setChecked()的时候再次触发onCheckedChanged。解决方式1.setChecked()的时候设置屏蔽,在onCheckedCha…

大家好,又见面了,我是你们的朋友全栈君。

问题

当我们只想改变CompoundButton的状态时,setChecked会出现onCheckedChanged的情况。

原因

源码可见只要CompoundButton设置了setOnCheckedChangeListener,就会再每次调用setChecked()的时候再次触发onCheckedChanged

解决方式

1.setChecked()的时候设置屏蔽,在onCheckedChanged中直接return;
2.清除listener,setOnCheckedChangeListener(null),之后再加回来

所以最好不要在onCheckedChange中写逻辑,如果要写也最好不要再setChecked,否则需要自己设置屏蔽;并且CompoundButton默认会抢夺响应点击,onCheckedChange响应是在Button勾选之后的

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134266.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月2日 下午3:20
下一篇 2022年5月2日 下午3:20


相关推荐

  • python进阶(一):python多线程

    python进阶(一):python多线程前言本节讲 python 的多线程 多线程可以实现高并发 但是在 python 中多线程不是真正的多线程 不同线程之间不能够并行处理 同一个时间片段内只有一个线程在运行 这是由于 python 自身的 GIL 全局解释器锁 导致的 由于历史原因 难以更改 关于 GIL 等知识点在其它章节我们介绍 本节只介绍 python 多线程的使用 threading 库 python3 中实现多线程的库为 threading 库 threading 库使用非常简单 使用多线程 我们可以同时执行多个相同或者不同的任务 提高程序运行效率 创建一个

    2026年3月17日
    2
  • webstorm2021激活码_通用破解码

    webstorm2021激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    278
  • pathname_not found in java.library.path

    pathname_not found in java.library.path|–ContextPath–|–ServletPath-|–PathInfo–|http://www.myserver.com/mywebapp/helloServlet/hello|——–RequestURI—————————-|

    2025年12月13日
    4
  • fstream中文路径

    fstream中文路径在C++的标准库中,std::fstream是个挺好用的文件读写流,操作文件很方便,因为是C++标准库,所以没有其它的环境依赖。在使用fstream过程中,有个打开中文路径文件会失败的问题,自己的代码中一直没处理好,这几天终于有点闲心,把这里改透。涉及很多知识点,也是个遗留已久的问题,特此做个记录。在最后用了个一劳永逸的解决此问题方法:将fstream、FILE再包装下。中文路径使用fstream调试程序过程中,发现打开含中文路径的文件时,会打开失败。查了一些资料,说在VS2008、vs200..

    2025年7月11日
    4
  • 即梦AI创意灵感怎么获取_即梦AI灵感探索页面使用教程

    即梦AI创意灵感怎么获取_即梦AI灵感探索页面使用教程

    2026年3月13日
    3
  • python中copy.deepcopy_clone和copy的区别

    python中copy.deepcopy_clone和copy的区别同样是copy,二者有什么不同呢今天我们就一探究竟!!!python——赋值与深浅拷贝  初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~预备知识一——python的变量及其存储  在详细的了解python中赋值、copy和deepcopy之前,我们还是要花一点时间来了解一下p…

    2022年10月2日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号