necesito establecer el valor de defup para un ListPreference cuando se inicia la actividad. Lo he intentado con ListPreference.setDefaultvalue("value");
pero es la primera entrada de la lista por defecto. Lo necesito porque debo verificar una condición y establecer como predeterminado el valor que satisface esa condición, así que creo que no se puede hacer desde el archivo xml (con android:defaultValue
)Cómo establecer el valor predeterminado de un ListPreference
Por ejemplo, supongamos que tengo esta matriz de valores en el 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>
en el XML PREFERENCE:
<ListPreference
android:title="Colour select"
android:summary="Select your favourite"
android:key="colour"
android:entries="@array/opts"
android:entryValues="@array/opts_values" />
en la actividad que me gustaría hacer algo como esto:
String mycolour;
if (something) {
mycolour="1";
} else {
mycolour="2";
}
ListPreference colour = (ListPreference) findPreference ("colour");
colour.setDefaultValue(mycolour);
Pero no funciona, porque es la primera opción por defecto. ¿Podría explicarme cómo hacer que otro sea el predeterminado? Gracias.
No estoy seguro de que esta sea la solución correcta, ya que setValue o setValueIndex establecerá efectivamente el valor, incluso si el usuario ya ha proporcionado un valor personalizado que está almacenado en las preferencias. Lo que funciona para mí es 'if (colour.getValue() == null) { colour.setValue (mycolour); } ' – mtotschnig
y ¿qué es' int index'? ¿Qué pasa si quiero establecer una cadena definida? –
¿Cómo recupero el último valor almacenado en el almacenamiento persistente para una preferencia configurada para el almacenamiento persistente? –