如何做与偏好属性相反的android:依赖?

2022-08-31 15:06:08

是否存在与 完全相反的 XML 属性?android:dependency

我希望在未检查另一个首选项时启用依赖首选项,并在检查时禁用依赖首选项。

编辑:也许问题不在于也许有一个xml属性,我可以添加它来禁用该首选项的默认值,然后像我想要的那样以相反的方式切换它。android:dependencyandroid:dependency

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


答案 1

实际上,我自己发现了它,并认为我只是将其发布在这里,以帮助任何可能有相同问题的人:

android:disableDependentsState="true"

把它放在控制首选项中。


答案 2

Dmytro Zarezenko问,如果您希望在某些依赖项所依赖的首选项为真时启用某些依赖项,并在该首选项为假时启用某些依赖项,该怎么办?

使用上述方法设置一种类型的所有从属首选项(数量越大)。然后(类具有实现 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));
    }
}

推荐