Как установить значение по умолчанию для ListPreference

Мне нужно установить значение defult для ListPreference при запуске Activity. Я попытался с ListPreference.setDefaultvalue("value"); Но по умолчанию он делает запись в списке «Избранное». Мне нужно это, потому что я должен проверить условие и установить по умолчанию значение, которое удовлетворяет этому условию, поэтому я думаю, что это невозможно сделать из xml-файла (с android:defaultValue )

Например, предположим, что у меня есть этот массив значений в файле arrays.xml:

 <string-array name="opts"> <item>red</item> <item>green</item> <item>blue</item> </string-array> <string-array name="opts_values"> <item>1</item> <item>2</item> <item>3</item> </string-array> 

В PreferenceScreen xml:

 <ListPreference android:title="Colour select" android:summary="Select your favourite" android:key="colour" android:entries="@array/opts" android:entryValues="@array/opts_values" /> 

В Управлении я хотел бы сделать что-то вроде этого:

 String mycolour; if (something) { mycolour="1"; } else { mycolour="2"; } ListPreference colour = (ListPreference) findPreference ("colour"); colour.setDefaultValue(mycolour); 

Но это не работает, потому что он делает первый выбор по умолчанию. Не могли бы вы объяснить мне, как сделать другой по умолчанию? Благодарю.

Ты пробовал:

 setValueIndex(int index); 

Вам не нужно программно обрабатывать значение по умолчанию ListPreferences . Вы можете сделать это в файле настроек xml. Ниже приведен пример

  <string-array name="opts"> <item>red</item> <item>green</item> <item>blue</item> </string-array> <string-array name="opts_values"> <item>1</item> <item>2</item> <item>3</item> </string-array> <ListPreference android:title="Colour select" android:summary="Select your favourite" android:key="colour" android:entries="@array/opts" android:entryValues="@array/opts_values" android:defaultValue="2" /> 

Здесь я выбрал 2 как значение по умолчанию. Помните, что defaultvalue будет элементом opts_values .

Извините, мой плохой английский.

  1. Элемент списка
  2. Получить список Проверьте, имеет ли значение значение NULL. Если значение null равно значению по умолчанию.

Код:

 ListPreference dataPref = (ListPreference) findPreference("keyList"); if(dataPref.getValue() == null){ dataPref.setValueIndex(0); //set to index of your deafult value } 

Или вы также можете попробовать colour.setValue(mycolour);

Только для записи, если у кого-то есть эта проблема:

setValueIndex(int X) устанавливает значение @ index X в значение по умолчанию – так что это, вероятно, то, что вы ищете .

Установите это значение ПОСЛЕ того, как вы добавили значения! (Глупая ошибка, но мне понадобилось полчаса)

Это старый пост, но вот еще один способ установить значение по умолчанию для ListPreference со следующей строкой кода:

 PreferenceManager.setDefaultValues(getActivity(), R.xml.preferences, false); 

((ListPreference) findPreference("pref_language")).setValue(Locale .getDefault().getLanguage());

SetValue () – метод ListPreference, а setDefaultvalue – метод предпочтения

На самом деле это потому, что SharedPreferences будет сохраняться после повторной сборки приложения. Удалите его и повторите попытку.

Вы можете установить значение по умолчанию, используя этот ключ

 <string-array name="syncFrequency"> <item name="1">Block All Calls</item> <item name="2">Block Black List</item> <item name="3">Block Unknown Calls</item> <item name="4">Allow White List</item> <item name="5">Receive All Calls</item> </string-array> <string-array name="syncFrequencyValues"> <item name="1">Block_All_Calls</item> <item name="2">Block_Black_List</item> <item name="3">Block_Unknown_Calls</item> <item name="4">Allow_White_List</item> <item name="5">Receive_All_Calls</item> </string-array> <ListPreference android:key="prefSyncFrequency" android:entries="@array/syncFrequency" android:summary="%s" android:defaultValue="Block_Black_List" android:entryValues="@array/syncFrequencyValues" android:title="@string/call_block_options" /> 
Intereting Posts
Как сохранить пароль пользователя в памяти устройства Фрагмент Android не заменяется должным образом Gradle не упаковывает gdbserver в apk. Ndk-gdb приводит к ошибке «ОШИБКА: не отлаживаемое приложение, установленное на целевом устройстве» Получить входной текст с пользовательским видом без edittext android Android image exif reader сторонняя api Как создать полноэкранный диалог с дизайном материалов? Отсутствуют источники ImageView в первый раз, когда я перетаскиваю в свой GridView Тест Espresso UI не распознает onView () Не удалось открыть zip-файл. Ключ зависимости может быть поврежден Замена фрагментов и изменение ориентации Получите информацию о GPU на Android без SurfaceView В любом случае, чтобы программно изменить макет весового свойства линейного макета Дополнительные разрешения, чтобы приложение отображалось на всех устройствах и включало дополнительные функции на некоторых устройствах? Создать адаптер для заполнения Spinner с помощью объектов Http Live Streaming на Android 4 (сэндвич с мороженым)