Intereting Posts
Как установить SignalR в Android Studio, чтобы игнорировать проблемы SSL для конвертации ImageView не поддерживает максимальную высоту и ширину Мониторинг использования приложений приложений Как отключить звуковой щелчок звуковой кнопки в моем приложении для Android? Как добавить динамическую кнопку под другое представление? Не удалось заблокировать поверхность Как открыть программу электронной почты через Intents (но только программу электронной почты) «Net :: ERR_CACHE_MISS» при загрузке внешнего URL-адреса в Кордове Вложенные фрагменты исчезают во время переходной анимации Android OverlayItem.setMarker (): изменение маркера для одного элемента Каковы новые вложенные API прокрутки для Android-L? MockRetrofit и BehaviorDelegate игнорируют OkHttpClient Как добавить горизонтальный RecyclerView в элемент списка Странное поведение изображений в RecyclerView Безопасность строковых ресурсов

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