简体   繁体   中英

How to set multiple default values in a MultiSelectListPreference?

I have preference.xml like this

<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"
        />

with my two arrays:

    <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>

I want the default behaviour to be all of the options selected, but currently nothing is selected by default. Am I doing something wrong?

To make all MultiSelectListPreference items selected (on) by default, then include the attribute defaultsValue for the Preference, eg

android:defaultValue="@array/stores"

If it's not working, then make sure that you clear the application data as this will only take effect the first time the application is run.

I think you forgot calling PreferenceManager.setDefaultValues(this, R.xml.preference, false); in the onCreate() method of your mainActivity .

This method will read your preference.xml file and set the default values defined there. Setting the readAgain argument to false means this will only set the default values if this method has never been called in the past so you don't need to worry about overriding the user's settings each time your Activity is created.

I know I am late but may be my answer helps someone else in future...

set

android:defaultValue="@array/empty_array"

where empty_array is an empty array.

If you are adding MultiSelectListPreference programmatically then you can simply call multiSelectListPreference.setDefaultValue() :

eg

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM