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()判断是否为手动点击,只处理手动点击的即可。

你可能感兴趣的:(知识扩展,android)