Intereting Posts
В Android, как отключить функцию входа в систему EditText? MediaRecorder.stop () висит с Android 4.0 (ICS) Как прочитать содержимое сообщения нового в предстоящем сообщении в android? Как вызвать приложение YouTube из My WebApp Как остановить Handler в Android? Android: макет по умолчанию для списка с заголовком и субтитрами Подписание apk с .p12 Как проверить, был ли изменен EditText или нет? Можно ли синхронизировать Android AsyncTask doInBackground с сериализацией выполнения задачи? Веб-просмотр Android загружает локальный javascript Изменить цвет фона панели инструментов программно не меняет название панели инструментов Цвет фона Временно отключить анимацию на Lollipop CheckBox Как получить переменную в другом действии? Объявление Admob никогда не отображается в представлении Какой метод называется моментом, когда деятельность полностью изложена и готова для взаимодействия с пользователем?

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