為 CheckBox 設定監聽器時,若匿名類別參數型別寫錯,編譯器會誤判為 RadioGroup.OnCheckedChangeListener,導致無法編譯或執行錯誤。
satView.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) { // 錯誤參數
// ...
}
});
CheckBox 繼承自 CompoundButton,應使用 CompoundButton.OnCheckedChangeListener:
satView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// 勾選時的邏輯
} else {
// 取消勾選時的邏輯
}
}
});
buttonView 即為觸發事件的 CheckBox 本身。isChecked 直接反映當前勾選狀態,無需額外呼叫 isChecked()。ToggleButton、Switch 等 CompoundButton 子類。