android - ListPreference 依赖项

标签 android dependencies preferences

我有一个 ListPreference,看起来像这样:

<ListPreference
android:title="Choose item"
android:summary="..."
android:key="itemList"
android:defaultValue="item1"
android:entries="@array/items"
android:entryValues="@array/itemValues" />

然后,我有另一个偏好,只有在 ListPreference 中选择了“item3”时才应该启用它。

我可以通过 android:dependency 以某种方式完成此任务吗?类似 android:dependency="itemList:item3"

谢谢!

最佳答案

你可以做这样的事情的唯一方法是编程。

您必须在 ListPreference 上设置一个更改监听器,然后启用/禁用另一个。

itemList = (ListPreference)findPreference("itemList");
itemList2 = (ListPreference)findPreference("itemList2");
itemList.setOnPreferenceChangeListener(new
Preference.OnPreferenceChangeListener() {
  public boolean onPreferenceChange(Preference preference, Object newValue) {
    final String val = newValue.toString();
    int index = itemList.findIndexOfValue(val);
    if(index==3)
      itemList2.setEnabled(true);
    else
      itemList2.setEnabled(false);
    return true;
  }
});

如果我是你,如果第一个设置不正确,我什至不会显示第二个偏好。为此,您必须手动声明首选项(而不是在 XML 中)并添加/删除它,而不是启用/禁用。

这不是你见过的最好的答案吗?!

伊曼纽尔

关于android - ListPreference 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3969807/

相关文章:

android - Kotlin 版本 1.1.4-eap-77 不工作

java - AutoCompleteTextView 未按预期工作

javascript - 将 css/js 缩小到各自的文件中

java - 在 Java/SWT 中保存窗口状态

eclipse - 标签以选择 eclipse 中的自动完成项目?

android - 来自首选项 xml 的 Mailto 可能吗?

android - AudioRecord.read() 方法在 Android 4.3+ 上无限期阻塞

android - 在android中处理多个通知

node.js - 如何在 package.json 中强制嵌套 npm 依赖

java - 将范围更改为运行时后依赖性消失