Странно, я знаю, но это сработало в моем случае.

ужно установить значение по умолчанию для ListPreference, когда начинается деятельность. Я пробовал с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);

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