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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何设置python的环境变量_anaconda环境变量手动设置

    如何设置python的环境变量_anaconda环境变量手动设置在python项目实践中,不知道为什么我的os.getenv一直拿不到环境变量,于是我就试了三种设置环境变量的方法,中解决了问题。一.系统变量设置python环境变量的配置方法:1、第一步在我们的电脑上鼠标右键此电脑,选择属性,进去之后,点击高级系统设置,如下图所示2、第二步进去之后,点击环境变量,如下图所示:3、第三步进去环境变量界面之后,点击path,进行编辑,如下图所示:二.pycharm用户环境变量设置:1.打开文件—设置2.打开构建,执行,部署–python控制台–环境变量

    2022年8月25日
    7
  • 人口出生率公式_三阶差商公式

    人口出生率公式_三阶差商公式本博文源于matlab。旨在对出生人口增长率进行计算。

    2025年9月14日
    7
  • c语言整数取位_c语言的位运算符号

    c语言整数取位_c语言的位运算符号案例:#include <stdio.h>#include <stdint.h>int main(void){ int8_t i8 = 100; int16_t i16 = 666; int32_t product = i8*i16; printf(“product=%d\n”,product); return 0;}结果:…

    2022年8月18日
    15
  • 批处理框架spring batch基础知识介绍「建议收藏」

    批处理框架spring batch基础知识介绍「建议收藏」TableofContentsspringbatch简介SpringBatch架构介绍SpringBatch核心概念介绍什么是Job什么是JobInstance什么是JobParameters什么是JobExecution什么是Step什么是StepExecution什么是ExecutionContext什么是JobRepository…

    2022年5月28日
    39
  • hashmap线程不安全问题_arraylist线程不安全体现在哪里

    hashmap线程不安全问题_arraylist线程不安全体现在哪里一、头插法导致死循环在jdk1.7以前,HashMap在进行扩容时采用的是头插法,可能当时别人觉得这样比较高效,但是也带来了线程安全问题。刚开始时HashMap是这样的:正常扩容后是这样的:但如果是在多线程下,两个线程的指向3:此时线程1比线程2先执行,那么线程1就会指向7,将线程7.next指向了3,:但是对于线程2来说,3.next=7;所以就形成了死循环,也就是3和7构成了环。二、数据覆盖在jdk1.8以后,改了1.7以前的小毛病,但是新的问题又来了,我们来看下源码:

    2022年8月31日
    4
  • 运营中心组织架构_微服务系统架构介绍

    运营中心组织架构_微服务系统架构介绍X:一个服务器不行就多来几个服务器Y:一个项目切成很多部分Z:将数据进行切分,使用不同的数据库SpringCloud配置注册中心:设置配置文件,首先改为yml文件开启后访问localhost:8761在Application里面就可以看到配置的注册中心了。但是在实际操作中,往往不用显示这个注册中心,所以在配置的时候加上一句话:再次开启,就没有了。…

    2022年8月21日
    7

发表回复

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

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