如何在MultiSelectListPreference中设置多个默认值?

时间:2013-03-26 02:54:16

标签: android sharedpreferences preferences

我有这样的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 个答案:

答案 0 :(得分:15)

默认情况下,要选中(开启)所有MultiSelectListPreference个项目,然后为首选项添加属性defaultsValue,例如

android:defaultValue="@array/stores"

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

答案 1 :(得分:5)

我想你忘记了致电PreferenceManager.setDefaultValues(this, R.xml.preference, false);onCreate()。{/ p>的mainActivity方法中

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

答案 2 :(得分:2)

我知道我迟到但未来可能是我的回答帮助别人......

设置

android:defaultValue="@array/empty_array"

其中empty_array是一个空数组。

答案 3 :(得分:0)

如果您以编程方式添加MultiSelectListPreference,则只需调用multiSelectListPreference.setDefaultValue()

例如

val preference = MultiSelectListPreference(context)
preference.setDefaultValue(setOf("US, "CN"))