安卓设置 - 反向依赖

3

我有一个主要的布尔设置,当为true时将使一个子元素处于活动状态,但当它为false时,子元素a将被禁用,子元素b将处于活动状态。

例如:

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

我知道如何在XML标签中设置依赖关系,但是否可以朝特定子元素设置反向关系呢?

谢谢。

附:如果可能的话,我想在XML中实现它...

2个回答

11
< p >在CheckBoxPreference中使用android:disableDependentsState="true"< /p > < p >例如:< /p >
<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 为真“true”时,偏好设置将被禁用,反之亦然。

6
无法纯粹使用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;
        }
    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接