如何与首选属性android:dependency相反?

bry*_*bam 62 java xml dependencies android preferences

是否有与之完全相反的XML属性android:dependency

我希望在检查另一个未选中时禁用其他依赖首选项并禁用它.

编辑:也许问题不在于android:dependency可能有一个xml属性,我可以添加,以使该偏好设置的默认值被禁用,然后android:dependency将按照我想要的相反方式切换它.

再次编辑:我尝试android:enabled="false"在首选项中进行设置,它会像我想要的那样禁用它,但即使它依赖于其他首选项它也没有像我希望的那样启用它

bry*_*bam 130

实际上是我自己找到了它并且认为我只是在这里发布它以帮助任何可能有同样问题的人:

android:disableDependentsState="true"
Run Code Online (Sandbox Code Playgroud)

把它放在控制偏好中.

  • 但是,如果我想启用一些prefs并禁用一些prefs取决于一个复选框pref? (22认同)
  • 更清楚一点:将该行放在您的偏好**所依赖的偏好上**.该文件说:"导致**家属**被禁用的状态(对于开启或关闭是真的,是真的)". (7认同)

Ste*_*ing 9

Dmytro Zarezenko询问,如果您希望某些依赖项在它们所依赖的首选项为true时启用,而某些依赖项在该首选项为false时启用.

使用上述方法设置一种类型的所有从属首选项(具有更大的数字).然后(使用实现OnSharedPreferenceChangeListener的类)在首选项活动和/或首选项片段中具有这样的代码:

@Override
public void onResume()
{
    super.onResume();
    sharedPreferences.registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause()
{
    super.onPause();
    sharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
    if (key.equals("pref_that_they_depend-upon")
    {
        // Iterate over the preferences that need to be enabled or disabled,
        // lets say there is just one called the_awkward_one.
        Preference preference = findPreference("the_awkward_one");
        // Or preference.setEnabled(! sharedPreferences.getBoolean(("pref_that_they_depend-upon", defaultValue));
        preference.setEnabled(sharedPreferences.getBoolean(("pref_that_they_depend-upon", defaultValue));
    }
}
Run Code Online (Sandbox Code Playgroud)