首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何实现偏好属性android:依赖的对立面?

如何实现偏好属性android:依赖的对立面?
EN

Stack Overflow用户
提问于 2010-08-29 02:19:57
回答 5查看 11.8K关注 0票数 63

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

我希望在另一个未选中时启用从属首选项,并在选中时禁用它。

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

再次编辑:我试着在首选项中设置android:enabled="false",它会像我希望的那样禁用它,但即使它依赖于另一个首选项,它也没有像我希望的那样启用它

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-08-29 02:35:15

实际上是我自己找到的,我想把它贴在这里,以帮助任何可能有同样问题的人:

代码语言:javascript
复制
android:disableDependentsState="true"

把它放在控制偏好中。

票数 142
EN

Stack Overflow用户

发布于 2013-05-15 22:18:20

Dmytro Zarezenko问到,如果您希望在依赖项所依赖的首选项为true时启用某些依赖项,而在该首选项为false时启用某些依赖项,该怎么办。

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

代码语言:javascript
复制
@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));
    }
}
票数 9
EN

Stack Overflow用户

发布于 2011-12-16 00:12:15

这是我的代码示例,用于从代码而不是XML完成此操作。

代码语言:javascript
复制
  String eitherKey = "either";
  String orKey = "or";
  CheckBoxPreference either = new CheckBoxPreference(this);
  either.setKey(eitherKey);
  either.setTitle("Either");
  either.setSummary("It is either one or");
  either.setDefaultValue(false);
  either.setDisableDependentsState(true);
  inlinePrefCat.addPreference(either);

  try
  {
     //Crossfade Time
     CheckBoxPreference or = new CheckBoxPreference(this);
     or.setKey(orKey);
     or.setTitle("Or");
     or.setSummary("the other");
     inlinePrefCat.addPreference(or);
     or.setDependency(eitherKey);
  }
  catch (Exception e)
  {
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3591901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档