6

Estoy usando PreferenceManager.setDefaultValues(context,R.xml.preferences,false) para establecer los valores predeterminados de las preferencias en mi aplicación y he notado que si agrego una nueva preferencia, entonces mi PreferenceFragment no muestra un valor predeterminado para ella , incluso si se encuentra en el preferences.xml ..PreferenceManager.setDefaultValues ​​readAgain parámetro y nuevas preferencias

se debe esto al hecho de que yo indique readAgain como falso?

Sé que puedo simplemente probar y ver, pero yo sólo quería estar seguro de que el readAgain está destinado para este fin, es decir, volver a leer los valores por defecto de no volver puesta a la configuración del usuario, sino para establecer los valores predeterminados de las nuevas propiedades. Si este es exactamente el propósito del indicador readAgain, ¿puede darme una razón para no establecer siempre readAgain en true, dado que no restablece las preferencias del usuario?

Respuesta

4

Establecer la bandera readagain en true asegurará que todos los valores predeterminados no configurados se vuelvan a establecer. Ese es el resumen.

Configurar el readagain causará sobrecarga adicional ya que básicamente significa que, el código pasará a través del SharedPreference completo una vez más para verificarlos. Con el readAgain falso, todo lo que hace es verificar si el archivo (tiene_set_default_values.xml) que se utiliza como marcador para establecer los valores predeterminados está presente o no.

En cualquier caso, no establecerá ningún valor que ya esté configurado.

+0

Pensé en la posible sobrecarga ... Tengo menos de 10 preferencias, así que no debería ser un problema. ¿Hay alguna otra manera de monitorear si se agregan nuevas preferencias y forzar una recarga de preferencias solo en ese caso? Por ejemplo, ¿puedo entender cuándo se lanza una aplicación por primera vez después de actualizarla? Tal vez podría usar una preferencia como * last_version_seen * y verificar cuando la aplicación se inicia contra la versión actual y activar las preferencias de recarga con * readAgain * establecido en verdadero, ¿verdad? –

+1

Consulte el código de [ChangeLog] (http://code.google.com/p/android-change-log/). El nombre explica el uso de ese conjunto de código. Sin embargo, aparte de eso, puede implementar solo la comprobación de primera ejecución configurando 'DefaultSharedPreference' para eso. ;-). – Niranjan

+0

@GianniCostanzi Deje 'readagain' en verdadero. Si solo son 10 prefs, ¿por qué molestarse con mucho más código? No es flojo, es solo que no vale la pena crear otro pref para ese propósito de 10-20 preferencias. Pero si te gustó la librería 'ChangeLog' que te he mostrado, entonces agrega el bit de código en ese archivo' cl.firstRun() 'está ahí en alguna parte. :-). De lo contrario, simplemente déjalo como verdadero. – Niranjan

Cuestiones relacionadas