2013-05-01 41 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是 “真”,反之亦然偏好将被禁用。