【问题标题】:Switch setOnCheckedChangeListener not working properly开关 setOnCheckedChangeListener 无法正常工作
【发布时间】:2017-09-05 19:01:51
【问题描述】:

我有一个名为 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

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

谢谢。

【问题讨论】:

    标签: android android-switch oncheckedchanged


    【解决方案1】:

    使用compoundButton.isChecked 代替isSelected。

    【讨论】:

    • 或者你可以检查 b 或者用一些语义词替换它,比如 hasChecked 并尝试 if(hasChecked )
    【解决方案2】:

    试试这个代码

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

    【讨论】:

    • 感谢您的回答先生。这两种方法现在都可以正常工作
    猜你喜欢
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 2014-09-18
    • 2019-09-19
    • 1970-01-01
    • 2016-12-01
    • 2021-08-09
    • 2014-04-15
    相关资源
    最近更新 更多