Intereting Posts
Обновление запущенного приложения на Android Использование putExtra для передачи значений в службу намерения Настройка манифеста Android Dropbox SDK Проблемы с временной зоной при чтении даты с Ormlite Как добавить WebView в виджет? Функция Android NDK __android_log_print andLogCat Как установить начальный масштаб / ширину для веб-просмотра Удалите текущий экран настроек и вернитесь на главный экран настроек Java.util.ConcurrentModificationException android после удаления элементов из списка массивов Как повторить этот JSON-массив с использованием Java и org.json в Android? Как отправить файл с устройства Android на другое устройство через Bluetooth по коду Очистка всех кэшированных элементов, созданных WebView? Как проверить подключение к Интернету в сети в Android (используя интернет другого устройства через HOTSPOT) Как отключить кеш браузера Android навсегда? Определить существование функции Google Streetview

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

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

Solutions Collecting From Web of "Как установить значение по умолчанию для ListPreference"

Ты пробовал:

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