【问题标题】:Android Switch Compat State IssueAndroid Switch 兼容状态问题
【发布时间】:2016-01-22 14:40:45
【问题描述】:

我想从父开关更改子开关的状态。

简而言之:

案例 1:Parent 开启 -> 所有 Child 开启

案例 2:Parent 关闭 -> 所有 Child 关闭

案例 3:子 2 关闭(子 1 和 3 开启)-> 父开启

问题 当我打开/关闭所有子开关时,父开关应相应地打开/关闭。

下面是我的代码 在代码案例 1,2 和 3 中工作正常。

switchParent.setOnCheckedChangeListener(新 CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {

            if (b) {

                switchChild1.setChecked(true);
                switchChild2.setChecked(true);
                switchChild3.setChecked(true);

            } else {

                switchChild1.setChecked(false);
                switchChild2.setChecked(false);
                switchChild3.setChecked(false);

            }
        }
    }); switchChild1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            setState();
        }
    });

    switchChild2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            setState();
        }
    });


    switchChild3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            setState();
        }
    });

setState()

private void setState() {

   if (switchChild1.isChecked() || switchChild2.isChecked() || switchChild3.isChecked()) {

        switchParent.setChecked(true);

    } else {

        switchParent.setChecked(false);

    }

}

我将不胜感激。

【问题讨论】:

    标签: android switchcompat


    【解决方案1】:

    改变你的 setState() 方法。

    private void setState() {
    if (switchChild1.isChecked() && switchChild2.isChecked() && switchChild3.isChecked()) {
        switchParent.setChecked(true);
    } else {
        switchParent.setChecked(false);
    }
    

    }

    【讨论】:

    • 我试过你的代码,但是当所有开关都打开并且我尝试关闭任何一个子开关时,所有开关状态都会自动变为关闭。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多