如何设置 ListPreference 的默认值

新手上路,请多包涵

我需要在 Activity 启动时设置 ListPreference 的默认值。我试过 ListPreference.setDefaultvalue("value"); 但它使列表的第一个条目成为默认值。我需要它,因为我必须检查一个条件并将满足该条件的值设置为默认值,所以我认为它不能从 xml 文件完成(使用 android:defaultValue

例如,假设我在 arrays.xml 中有这个值数组:

 <string-array name="opts">
    <item>red</item>
    <item>green</item>
    <item>blue</item>
</string-array>

<string-array name="opts_values">
    <item>1</item>
    <item>2</item>
    <item>3</item>
</string-array>

在 PreferenceScreen xml 中:

 <ListPreference
    android:title="Colour select"
    android:summary="Select your favourite"
    android:key="colour"
    android:entries="@array/opts"
    android:entryValues="@array/opts_values" />

在活动中我想做这样的事情:

 String mycolour;
if (something) {
    mycolour="1";
} else {
    mycolour="2";
}
ListPreference colour = (ListPreference) findPreference ("colour");
colour.setDefaultValue(mycolour);

但它不起作用,因为它默认为第一个选择。你能解释一下如何将另一个设置为默认值吗?谢谢。

原文由 Gnufabio 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 760
2 个回答

你有没有尝试过:

 setValueIndex(int index);

原文由 biddulph.r 发布,翻译遵循 CC BY-SA 2.5 许可协议

您不需要以编程方式处理 ListPreferences 的默认值。您可以在 xml 设置文件中执行此操作。下面是一个例子

<string-array name="opts">
    <item>red</item>
    <item>green</item>
    <item>blue</item>
</string-array>

<string-array name="opts_values">
    <item>1</item>
    <item>2</item>
    <item>3</item>
</string-array>

 <ListPreference
    android:title="Colour select"
    android:summary="Select your favourite"
    android:key="colour"
    android:entries="@array/opts"
    android:entryValues="@array/opts_values"
    android:defaultValue="2" />

这里我选择了 2 作为默认值。记住 defaultvalue 将是 opts_values 元素。

原文由 Md. Naushad Alam 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题