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

问题描述 投票:15回答:4

我有这样的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>

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

android sharedpreferences preferences
4个回答
15
投票

要默认选择(打开)所有MultiSelectListPreference项目,请为首选项包含属性defaultsValue,例如

android:defaultValue="@array/stores"

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


5
投票

我想你忘了在你的PreferenceManager.setDefaultValues(this, R.xml.preference, false);onCreate()方法中调用mainActivity

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


2
投票

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

android:defaultValue="@array/empty_array"

其中empty_array是一个空数组。


0
投票

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

EG

val preference = MultiSelectListPreference(context)
preference.setDefaultValue(setOf("US, "CN"))
© www.soinside.com 2019 - 2024. All rights reserved.