18

我有这样的preference.xml

<MultiSelectListPreference
        android:key="store_select"
        android:title="@string/setting_store_title"
        android:summary="@string/setting_store_summary"
        android:dialogTitle="@string/setting_store_dialog_title"
        android:entries="@array/store_names"
        android:entryValues="@array/stores"
        android:defaultValue="@array/stores"
        />

用我的两个数组:

    <string-array name="stores">
    <item>1</item>
    <item>2</item>
    <item>3</item>
    <item>4</item>
    <item>5</item>
</string-array>

<string-array name="store_names">
    <item>foodbasics</item>
    <item>nofrills</item>
    <item>metro</item>
    <item>loblaws</item>
    <item>sobeys</item>
</string-array>

我希望默认行为是选择的所有选项,但目前默认情况下没有选择任何选项。难道我做错了什么?

4

4 回答 4

18

MultiSelectListPreference要默认选中(打开)所有项目,然后包含defaultsValuePreference 的属性,例如

android:defaultValue="@array/stores"

如果它不起作用,请确保您clear的应用程序数据,因为这只会在应用程序第一次运行时生效。

于 2014-06-15T15:47:26.647 回答
5

我想你忘记调用你PreferenceManager.setDefaultValues(this, R.xml.preference, false); 的.onCreate()mainActivity

此方法将读取您的preference.xml文件并设置其中定义的默认值。将readAgain参数设置为false意味着仅在过去从未调用过此方法时才设置默认值,因此您不必担心每次创建 Activity 时都会覆盖用户的设置。

于 2013-05-05T03:34:27.287 回答
4

我知道我迟到了,但我的回答可能会在未来帮助其他人......

android:defaultValue="@array/empty_array"

whereempty_array是一个空数组。

于 2014-02-07T07:07:38.377 回答
0

如果您以MultiSelectListPreference编程方式添加,那么您可以简单地调用multiSelectListPreference.setDefaultValue()

例如

val preference = MultiSelectListPreference(context)
preference.setDefaultValue(setOf("US, "CN"))
于 2019-05-01T18:41:51.497 回答