我有一个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/

10-10 07:08