OnCheckedChangeListener和setChecked之间冲突问题解决

今天遇到一个奇怪的问题,hdmi设备的usb触屏线(Usb接口)在拔掉的时候,界面的Checkbox,Switch等控件会响应CompoundButton.OnCheckedChangeListener,很明显,通过debug(debug模式开启显示指针位置)可以明显发现屏幕没有任何点击事件,可以确认非人为导致的状态变化,另外也发现程序调用控件的setChecked方法,也会走到onCheckedChanged,最终确认onCheckedChanged和setChecked存在冲突。

冲突解决方案:

    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        // 人为点击
        if (buttonView.isPressed()) {
            // TODO 人为点击流程
            return;
        }

    }

即:通过buttonView.isPressed()判断是否为手动点击,只处理手动点击的即可。

发布了138 篇原创文章 · 获赞 245 · 访问量 15万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章