2016-01-22 105 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