Android добавляет MultiSelectListPreference - PullRequest
1 голос
/ 05 мая 2019

Я пытаюсь реализовать настройки Android Jetpack для экрана настроек.все работает хорошо, когда я нажимаю MultiSelectListPreference, он показывает список записей, но у меня есть несколько вопросов,

  1. , почему entryValues ​​не может быть целочисленным массивом?(строка-массив работает нормально)
  2. как установить значения по умолчанию?Например: я хочу установить вторую и третью запись, которые будут проверяться по умолчанию в начале.

это часть моего файла pref.xml

...
app:entries="@array/res_entries"
app:entryValues="@array/res_id_values"
app:defaultValue="@array/res_def_values" //this line is not working
...

Если я установлю res_id_values в файле arrays.xml как integer-array, то приложение будет аварийно завершать работу.

Мой класс settingsFragment расширяет PreferenceFragmentCompat и переопределяет onCreatePreferences, и в нем я написал

setPreferencesFromResource(R.xml.pref.xml, rootkey)

EDIT

My res_entriesмассив:

<string-array name="res_entries">
  <item>apple</item>
  <item>Mango</item>
  <item>Guava</item>
</string-array>

мой res_id_values массив:

<string-array name="res_id_values">
  <item>1</item>
  <item>2</item>
  <item>12</item>
</string-array>

мой res_def_values массив:

<string-array name="res_def_values">
  <item>true</item>
  <item>false</item>
  <item>true</item>
</string-array>

1 Ответ

2 голосов
/ 06 мая 2019

Итак, наконец, я решил это.Все благодаря @CommonsWare.

ответ на мой первый вопрос заключается в том, что мы не можем использовать целочисленный массив.Используйте строковый массив и сохраните в нем целочисленные значения.позже, когда вы его получите, используйте Integer.parseInt ().

, теперь перейдя ко второму вопросу, чтобы сохранить значение по умолчанию (допустим, вы хотите, чтобы второй и третий элементы проверялись по умолчанию), используйте res_id_values ​​в res_def_values. Не используйте true / false или 0/1, как у меня .

Например: если в приведенном выше вопросе, если я хочу, чтобы apple и guava проверялись по умолчанию, тогда мой res_def_values ​​будет выглядетькак это:

<string-array name="res_def_values">
  <item>1</item>
  <item>12</item>
</string-array>
...