2013-05-01 284 views
2

我有一個主要布爾設置,如果爲true,則會使一個孩子處於活動狀態,但當其爲false時,孩子a將被禁用,並且孩子B將處於活動狀態。Android設置 - 反向依賴關係

ie;

if (ParentSetting == true) activate childSettingB elseIf(ParentSetting == false) activate childSettingB 

我知道如何在xml標籤中有依賴關係,但是有可能與特定的子設置有反向關係嗎?

謝謝

ps。如果可能的話,我想用XML來實現它...

回答

5

沒有辦法在xml中純粹實現這一點。

使用android:disableDependentsState =「true」對父(偏好是依賴)將允許您反轉依賴關係,但它將兩個子設置。這不是你想要的。 disableDependentsState

唯一的辦法就是以編程方式進行。你可能知道如何做到這一點。

SwitchPreference dependee = (SwitchPreference) findPreference("dependee"); 
dependent2.setEnabled(!dependee.isChecked()); 
dependee.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { 
    public boolean onPreferenceChange(Preference preference, Object newValue){ 
      boolean isEnabled = ((Boolean) newValue).booleanValue(); 
      dependent2.setEnabled(!isEnabled); 
      return true; 
     } 
    }); 
4

使用android:disableDependentsState="true"在CheckBoxPreference

例如:

<CheckBoxPreference 
     android:key="cb_key" 
     android:title="@string/stop_service" 
     android:summaryOn="On 
     android:summaryOff="Off" 
     android:defaultValue="false" 
     android:disableDependentsState="true" /> 
    <Preference 
     android:key="pref_key" 
     android:title="pref_title" 
     android:summary="pref_summary" 
     android:dependency="cb_key" /> 

這樣,當CheckBoxPreference是 「真」,反之亦然偏好將被禁用。