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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章