Странно, я знаю, но это сработало в моем случае.
ужно установить значение по умолчанию для 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);
Но это не работает, потому что он делает первый выбор по умолчанию. Не могли бы вы объяснить мне, как сделать еще один по умолчанию? Благодарю.