RadioGroup调用check(id)方法时,onCheckedChanged方法被执行多次解决办法
来源:互联网 发布:web前端连接数据库 编辑:程序博客网 时间:2024/04/29 00:47
http://blog.csdn.net/piglovesula/article/details/9820521
http://blog.csdn.net/piglovesula/article/details/9820521
http://blog.csdn.net/piglovesula/article/details/9820521
http://blog.csdn.net/piglovesula/article/details/9820521
http://blog.csdn.net/piglovesula/article/details/9820521
http://blog.csdn.net/piglovesula/article/details/9820521
RadioGroup调用check(id)方法时,onCheckedChanged方法被执行多次解决办法
版权声明:本文为博主原创文章,未经博主允许不得转载。
- RadioGroup bottomMenuBar = (RadioGroup) findViewById(R.id.bottomMenuBar);
- bottomMenuBar.setOnCheckedChangeListener(this);
- bottomMenuBar.check(R.id.tab_new);
- @Override
- public void onCheckedChanged(RadioGroup group, int checkedId) {
- <span style="white-space:pre"> </span>LogUtil.info(TAG, "onCheckedChanged invoked");
- }
上面代码,我给RadioGroup设置了一个选中改变监听器(RadioGroup.OnCheckedChangeListener),然后调用它的check(id)方法,选中其中一个RadioButton,后面一段是监听回调方法,我简单的做了一个log打印处理。
运行程序时,发现onCheckedChanged invoked被打印了两次,也就是说回调方法被调用了两次:
这明显是我不希望看到的效果,例如我选中某一项,然后做网络请求操作,这种场景下,就会触发两次网络请求,我当然不希望这种情况发生。
如何解决:
我尝试了一些办法,最终决定放弃给RadioGroup设置onCheckedChangedListener这种方式来监听RadioButton的选中事件,而是给每个RadioButton都设置OnClickListener方法来实现,效果还是不错的,可以解决问题。但感觉不爽,心想这明明是个RadioButton,却要用click事件来监听它的选中,总感觉很别扭(看来我有轻微的强迫症,哈哈)。
(这里别看了,重点在下一段)
本来打算就这么做算了,反正能实现效果。后来有一天闲着没事,又想到了这个问题,心中还是觉得很别扭,于是去百度,谷歌了一下,百度真心没有谷歌强,虽然只是搜个问题而已,不足以说明什么哈,我百度了很久,没收获,然后寄希望于谷歌,真没让我失望,同样的问题,复制黏贴到谷歌,搜了一次,还真找到了一些解决思路。
在stackoverflow中找到一个,请点这里,他这个问题是调用三次,不过没关系,最终想要的效果都是让它只调用一次。
从文中得知一个思路,Call b.setChecked(true);
instead. 试了一下,的确可以解决,将上面代码中的check方法删掉用:
- ((RadioButton) bottomMenuBar.findViewById(R.id.tab_new)).setChecked(true);
运行程序,看log,onCheckedChanged方法只调用了一次:
完。
- RadioGroup调用check(id)方法时,onCheckedChanged方法被执行多次调用解决办法
- RadioGroup调用check(id)方法时,onCheckedChanged方法被执行多次解决办法
- RadioGroup调用check(id)方法时,onCheckedChanged方法被执行多次解决办法
- RadioGroup调用check(id)方法时,onCheckedChanged方法被执行多次解决办法
- [Android] RadioGroup调用check(id)方法时,onCheckedChanged被执行多次
- 调用RadioGroup的check(id)方法,监听onCheckedChanged方法被执行多次;调用clearCheck(),onCheckedChanged方法仍被执行的原因和解决办法
- 调用RadioGroup的check(id)方法,监听onCheckedChanged方法被执行多次;调用clearCheck(),onCheckedChanged方法仍被执行的解决办法
- 执行RadioGroup的check(Id)方法,会触发onCheckedChanged多次
- RadioGroup调用check()方法onCheckedChanged()调用多次
- RadioGroup调用setcheck(bool)方法时,onCheckedChanged方法被执行多次解决办法
- RadioGroup调用check(int)方法时,onCheckedChanged方法被执行两次
- E/JavaBinder:FAILED BINDER TRANSACTION错误解决+RadioGroup调用check方法的时候,onCheckedChanged被调用多次的问题解决
- RadioGroup调用check(id)方法时,OnCheckedChangedListener被多次回调问题
- 有关RadioGroup的OnCheckedChanged方法执行多次的探讨
- 非常鬼畜的RadioButton设置onCheckedChanged方法被执行多次
- struts方法被执行多次。
- CheckBox调用setChecked方法调用onCheckedChanged方法问题
- android listview 连续调用 getview调用getivew方法多次解决办法
- Spring Security
- Service基础(一)---》使用服务Service
- MapReduce产生RCFile文件在HDFS,HIve将RCFile文件加载到hive的表中
- python基础之字符串
- 安卓内核及源码编译
- RadioGroup调用check(id)方法时,onCheckedChanged方法被执行多次解决办法
- Mapreduce RCFile写入和读取API示例
- linux 下 opengl的安装
- 二叉堆
- 算法与数据结构学习资源大搜罗——良心推荐
- 分布式java shiro、maven、Bootstrap、Bootstrap、SpringMVC、Mybatis、Hibernate
- NOIP2015 解题报告
- String to Integer (atoi)
- HTML5实现经典Windows扫雷游戏