Как установить несколько значений по умолчанию в MultiSelectListPreference?

У меня есть 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>

Я хочу, чтобы по умолчанию все параметры были выбраны, но по умолчанию ничто не выбрано. Я что-то делаю неправильно?

Ответы

Ответ 1

Чтобы все элементы MultiSelectListPreference выбраны (включены) по умолчанию, затем добавьте атрибут defaultsValue для Предпочтения, например.

android:defaultValue="@array/stores"

Если он не работает, убедитесь, что вы clear данные приложения, так как это будет действовать только при первом запуске приложения.

Ответ 2

Я думаю, вы забыли позвонить PreferenceManager.setDefaultValues(this, R.xml.preference, false); в методе onCreate() вашего mainActivity.

Этот метод прочитает ваш файл preference.xml и задает значения по умолчанию, определенные там. Установка аргумента readAgain на false означает, что это будет устанавливать только значения по умолчанию, если этот метод никогда не был вызван в прошлом, поэтому вам не нужно беспокоиться о переопределении пользовательских настроек каждый раз, когда создается ваша активность.

Ответ 3

Я знаю, что опаздываю, но может быть, мой ответ помогает кому-то еще в будущем...

set

android:defaultValue="@array/empty_array"

где empty_array - пустой массив.

Ответ 4

Если вы добавляете MultiSelectListPreference программно, то вы можете просто вызвать multiSelectListPreference.setDefaultValue():

например

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