【问题标题】:Android Settings - inverse dependencyAndroid 设置 - 反向依赖
【发布时间】:2013-04-25 01:54:33
【问题描述】:

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

即;

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

我知道如何在 xml 标记中建立依赖关系,但是否可能与特定子设置存在反向关系?

谢谢

ps。如果可能的话,我想用 XML 来做......

【问题讨论】:

    标签: android xml dependencies settings


    【解决方案1】:

    没有办法纯粹在 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;
            }
        });
    

    【讨论】:

      【解决方案2】:

      在 CheckBoxPreference 中使用 android:disableDependentsState="true"

      例如:

      <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 为 ON“true”时,Preference 将被禁用,反之亦然。

      【讨论】:

        猜你喜欢
        • 2012-02-20
        • 1970-01-01
        • 1970-01-01
        • 2016-10-17
        • 1970-01-01
        • 1970-01-01
        • 2013-10-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多