CompoundButton调用setChecked多次触发onCheckedChanged
生活随笔
收集整理的這篇文章主要介紹了
CompoundButton调用setChecked多次触发onCheckedChanged
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
問題
當(dāng)我們只想改變CompoundButton的狀態(tài)時(shí),setChecked會(huì)出現(xiàn)onCheckedChanged的情況。
原因
源碼可見只要CompoundButton設(shè)置了setOnCheckedChangeListener,就會(huì)再每次調(diào)用setChecked()的時(shí)候再次觸發(fā)onCheckedChanged。
解決方式
1.setChecked()的時(shí)候設(shè)置屏蔽,在onCheckedChanged中直接return;
2.清除listener,setOnCheckedChangeListener(null),之后再加回來
所以最好不要在onCheckedChange中寫邏輯,如果要寫也最好不要再setChecked,否則需要自己設(shè)置屏蔽;并且CompoundButton默認(rèn)會(huì)搶奪響應(yīng)點(diǎn)擊,onCheckedChange響應(yīng)是在Button勾選之后的
總結(jié)
以上是生活随笔為你收集整理的CompoundButton调用setChecked多次触发onCheckedChanged的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小众绿软|游戏:Lode Runner
- 下一篇: 扫雷代码下载地址可以打开啦!