2010-09-22 6 views
69

Estoy intentando establecer un DefaultValue en un elemento ListPreference.Cómo iniciar una ListPreference a uno de sus valores

Aquí es una muestra de mi archivo preference.xml:

<ListPreference android:key="notification_delay" 
    android:title="@string/settings_push_delay" 
    android:entries="@array/settings_push_delay_human_value" 
    android:entryValues="@array/settings_push_delay_phone_value" 
    android:defaultValue="????"> 
</ListPreference> 

Las dos matrices:

<string-array name="settings_push_delay_human_value"> 
    <item>every 5 minutes</item> 
    <item>every 10 minutes</item> 
    <item>every 15 minutes</item> 
</string-array> 
<string-array 
    name="settings_push_delay_phone_value"> 
    <item>300</item> 
    <item>600</item> 
    <item>900</item> 
</string-array> 

Cuando entro en la actividad preferencia, se selecciona ningún elemento de la ListPreference. Intenté establecer un valor int como 1 en el "android: defaultValue" fied para seleccionar "10 minutos" pero no funciona.

<ListPreference android:key="notification_delay" 
    android:title="@string/settings_push_delay" 
    android:entries="@array/settings_push_delay_human_value" 
    android:entryValues="@array/settings_push_delay_phone_value" 
    android:defaultValue="1"> 
</ListPreference> 

¿Alguna idea?

Respuesta

91

Debe especificar el valor . Entonces, para obtener la primera entrada seleccionada por defecto, especifique defaultValue="300" en su ejemplo.

+0

Esto funciona bien, programáticamente tengo un valor de 300. Pero, de hecho, lo que me gustaría es seleccionar "gráficamente" una de las filas de ListPreference de manera predeterminada. –

+1

En mi aplicación, hace exactamente eso: el valor especificado para "defaultValue" se selecciona en la lista de preferencias, cuando la aplicación se inicia por primera vez. No entiendo por qué esto no debería funcionar para usted ... – sven

+0

Disculpe mi error. Hice un error entre los valores predeterminados y los valores en la matriz. Funciona bien en todos los teléfonos que probé. Gracias. –

19

Sucedió estar en la misma situación. Especificando un valor predeterminado consistente. Pero gráficamente no fue seleccionado. Borré los datos de la aplicación. Y luego funcionó como se esperaba. Por lo tanto, un clear puede ser útil en el momento del desarrollo al agregar nuevos elementos de XxxPreference.

+4

Lo mismo para mí. ¡Borré los datos de la aplicación y todo funciona bien! –

2

Si es un valor válido de la lista, vuelva a instalar la aplicación. Funcionará.

11

Además de la respuesta de Sven, debe llamar al método setDefaultValues ​​() en la actividad inicial. Esto establecerá una vez todos los valores predeterminados.

public class MainActivity extends Activity { 
    protected void onCreate(final Bundle savedInstanceState) { 
    // Set all default values once for this application 
    // This must be done in the 'Main' first activity 
    PreferenceManager.setDefaultValues(this, R.xml.preferences, false); 
    ... 
    } 
} 
Cuestiones relacionadas