开关 setOnCheckedChangeListener 无法正常工作

Switch setOnCheckedChangeListener not working properly

我有一个名为 aSwitch 的 Switch。我的 setOnCheckedChangeListener 中有以下代码:

    aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            if (!compoundButton.isSelected()) {
                Log.i("Yeah" , "Is Not Selected");
                invertLock(-1);
            }
            else {
                if (Utilities.isLockEnabled(context)) {
                    Log.i("Yeah" , "Is Locked");
                    Utilities.showLockEnabled(context);
                }
                else {
                    Log.i("Yeah" , "Is Not Locked");
                    invertLock(1);
                }
            }
        }
    });

Switch的第一个状态总是selected=false。当我点击开关时,它被选中=true,我的 Logcat 显示

I/Yeah: Is Not Selected

然后当开关选择=true,然后关闭,我的Logcat再次显示

I/Yeah: Is Not Selected

我的代码有问题吗?请帮帮我。

谢谢。

使用 compoundButton.isChecked 而不是 isSelected

试试这个代码

aSwitch.setOnCheckedChangeListener(new 
    CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
        if (!b) {
            Log.i("Yeah" , "Is Not Selected");
            invertLock(-1);
        }
        else {
            if (Utilities.isLockEnabled(context)) {
                Log.i("Yeah" , "Is Locked");
                Utilities.showLockEnabled(context);
            }
            else {
                Log.i("Yeah" , "Is Not Locked");
                invertLock(1);
            }
        }
    }
});