切换setOnCheckedChangeListener无法正常工作

时间:2017-09-05 19:01:52

标签: android android-switch oncheckedchanged

我有一个名为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的第一个状态= false。当我点击开关时,它被选中= true,我的Logcat显示

I/Yeah: Is Not Selected

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

I/Yeah: Is Not Selected

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

感谢。

2 个答案:

答案 0 :(得分:1)

使用compoundButton.isChecked代替isSelected

答案 1 :(得分:1)

试试此代码

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);
            }
        }
    }
});