You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何CompoundButton.OnCheckedChangeListener监听器无法正常工作?

CompoundButton.OnCheckedChangeListener 无法工作的解决办法

核心问题修正

你的代码存在一个拼写错误:把回调方法名onCheckedChanged写成了onCheckChanged(少了字母e),系统无法识别这个错误的方法名,导致监听完全不生效。

修正后的完整代码

//赋值变量
switchCompat = findViewById(R.id.bt_switch);

switchCompat.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        //检查状态
        if (isChecked) {
            //当开关按钮被选中时
            //设置夜间模式
            AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
        } else {
            //当开关按钮未被选中时
            //设置日间模式
            AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
        }
    }
});

额外排查点(若修正后仍不生效)

  • 确认switchCompat变量类型为SwitchCompat,且布局文件中R.id.bt_switch对应的控件确实是SwitchCompat,类型不匹配会导致绑定失败。
  • 检查代码其他位置是否调用了switchCompat.setOnCheckedChangeListener(null),或者重新设置了监听覆盖当前回调。
  • 设置夜间模式会触发Activity重启,重启后需重新给switchCompat绑定监听,并恢复正确的选中状态,避免监听丢失。

内容的提问来源于stack exchange,提问作者anonymous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:27:28