2016-01-22 101 views
1

UI SampleAndroid的切换COMPAT状态问题

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

壳体1:

简要

上父 - >所有子接通

壳体2:父断 - >所有子关闭

壳体3:儿童2关闭(儿童1 & 3 ON) - >父论

问题 当我开/关所有子开关父开关应该开启/相应地关闭。下面

是我在代码壳体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()

私人无效的setState(){

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

     switchParent.setChecked(true); 

    } else { 

     switchParent.setChecked(false); 

    } 

} 

我会很高兴任何帮助。

回答

1

更改您的setState()方法。

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

}

+0

我想你的代码,但在所有开关和我尝试关闭任何一个孩子转,那么所有到OFF自动切换状态的变化。 – Aks4125