Как установить несколько значений по умолчанию в 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"))