当我们想要实现了一个简单的有状态切换的控件的时候,我们通常会去实现,CompoundButton来实现我们想要的一个效果,最常见的就是系统的CheckBox,但是在使用的过程中,我们会发现一个问题就是:我们在使用SetChecked的时候,总是会触发,onCheckedChanged这个回掉方法;
那么怎么样才能做到不触发这个回掉方法呢?
首先我们需要知道为什么会触发这个方法;查看源码如下:

public void  setChecked(boolean checked) {if (mChecked != checked) {mChecked = checked;refreshDrawableState();// Avoid infinite recursions if setChecked() is called from a listenerif (mBroadcasting) {return;}mBroadcasting = true;if (mOnCheckedChangeListener != null) {mOnCheckedChangeListener.onCheckedChanged(this, mChecked);}if (mOnCheckedChangeWidgetListener != null) {mOnCheckedChangeWidgetListener.onCheckedChanged(this, mChecked);}mBroadcasting = false;            }
}

我们发现一个问题就是:只要我们设置了监听器,是会始终触发onCheckedChanged里面的回掉方法的,所以这里我们在调用SetChecked的时候不想触发OnCheckedChanged里面的方法的时候,我们在调用之前将这个监听器设置为空,掉用结束后,再次设置监听器;
具体如下:

mCheck.setOnCheckedChangeListener (null);
mCheck.setChecked (false);
mCheck.setOnCheckedChangeListener (mListener);

这样的话,就完美解决了,setChecked触发了onCheckedChanged里面的监听的方法;

compoundbutton调用setChecked触发onCheckedChanged的终极解决方案;相关推荐

  1. Android大图片裁剪终极解决方案 原理分析

    约几个月前,我正为公司的APP在Android手机上实现拍照截图而烦恼不已. 上网搜索,确实有不少的例子,大多都是抄来抄去,而且水平多半处于demo的样子,可以用来讲解知识点,但是一碰到实际项目,就漏 ...

  2. 【JS】1015- 异步编程的终极解决方案 async/await

    早期的回调函数 回调函数我们经常有写到,比如: ajax(url, (res) => {console.log(res); }) 复制代码 但是这种回调函数有一个大缺陷,就是会写出 回调地狱(C ...

  3. 固定导航栏android,Android 状态栏和导航栏的真终极解决方案

    去年我写过一篇文章,透明状态栏和导航栏的终极解决方案,并在 Github 上开源了代码,https://github.com/Zackratos/UltimateBar,其实在那之后,我一直对这个项目 ...

  4. android 键盘遮盖输入框_Android软键盘挡住输入框的终极解决方案

    前言 开发做得久了,总免不了会遇到各种坑. 而在Android开发的路上,『软键盘挡住了输入框』这个坑,可谓是一个旷日持久的巨坑--来来来,我们慢慢看. 入门篇 最基本的情况,如图所示:在页面底部有一 ...

  5. 海关179接口终极解决方案

    海关179接口终极解决方案 海关165号.179号要求电商平台开放订单原始数据.有幸参与过几次完整的对接流程,知道其中的麻烦事. 在对接微信群里,接触到的不外乎以下几种身份: 1.电商平台boss,自 ...

  6. android图片压缩终极解决方案

    如题,多种压缩方式常用的有尺寸压缩.质量压缩以及通过JNI调用libjpeg库来进行压缩,三种方式结合使用实现指定图片内存大小,清晰度达到最优,下面就先分别介绍下这几种压缩方式. 原文出处:http: ...

  7. LTE语音终极解决方案——VoLTE

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.VoLTE是什么? 二.LTE网络语音解决方案 1.SvLTE(Simultaneous Voice and LT ...

  8. Intel苹果电脑Mac+Win+Linux多重系统启动(+公用分区)终极解决方案(备忘)

    Intel苹果电脑Mac+Win+Linux多重系统启动(+公用分区)终极解决方案 在进入主题之前,有必要先和诸位了解一下 EFI - Extensible Firmware Interface (可 ...

  9. 细谈回调地狱终极解决方案及ES7新语法async和await

    1.回调地狱的一般解决方案 正常情况下,我们都知道用promise去解决回调地狱.通过其调用then 和catch方法来实现回调函数多层嵌套问题.但是,我们可以实际来仔细看看用promise解决回调地 ...

  10. R语言词云终极解决方案—wordcloud2包

    R语言词云终极解决方案-wordcloud2包 现在你也可以在R语言中绘制多样的词云了.wordcloud2是基于wordcloud2.js封装的一个R包,使用HTML5的canvas绘制.浏览器的可 ...

最新文章

  1. 第十七届智能车竞赛LOGO设计
  2. Unity3D_(游戏)贪吃蛇
  3. 按钮 小程序 弹出菜单_公众号怎么关联小程序
  4. debug LUW1 - do binding workflow
  5. “自启动”树莓派上的 .NET Core 3.0 环境
  6. 使用JPA和Spring 3.1进行事务配置
  7. 树状数组维护区间和的模型及其拓广的简单总结
  8. 如何在Mac 上的“自动操作”中使用所选文件创建工作流程?
  9. Web.xml in Hello1 project
  10. redis之消息订阅发布
  11. 程序员欢乐送(60):我有一个大胆的想法!
  12. pygarm windows 安装_飘云阁(PYG官方) Windows PowerShell实战指南(第2版)PDF - Powered by Discuz!...
  13. 智商情商哪个重要_智商or情商 哪个对孩子更重要
  14. SpringMVC注解@valid与@validata,@null,@notblank,@NotEmpty
  15. 爬虫笔记——东方财富科创板数据爬取(selenium方法)
  16. 深入研究glibc内存管理器原理及优缺点
  17. js实现搜索框智能搜索提示,类似百度搜索
  18. 解决win10 图标 显示 小白纸
  19. 奶牛与农夫John与oj
  20. 如何写好一封电子邮件

热门文章

  1. 最新mysql数据库源码编译安装。
  2. 【JAVA】jacob写word
  3. html下雨代码,(自己看)HTML5 Canvas下雨动画DEMO演示(示例代码)
  4. 智能小车-红外循迹篇
  5. matlab的小波分析,matlab小波分析步骤是什么
  6. pt电阻测温c语言算法,铂电阻测温仪的设计与实现
  7. as400 c语言程序,AS400上的C編程
  8. 双线性映射matlab,[Matlab]双线性变换法设计数字带通滤波器
  9. 教你如何使用win7系统屏幕键盘--win7w.com
  10. Java商城系统后端和小程序模板、毕业设计下载