¿Cómo se obtiene el valor por defecto de Android, Android preferencia definido en XML? No quiero repetir la definición del valor por defecto en el código y las preferencias de XML.

  • publica tu xml archivo de preferencias, ¿te refieres a un PreferenceScreen
InformationsquelleAutor hpique | 2010-05-04

3 Comentarios

  1. 61

    Puede definir el valor predeterminado de los recursos (/values/bool.xml):

    <resources>
        <bool name="mypreference_default">true</bool>
    </resources>

    Utilizar el valor en el preferences.xml:

    <CheckBoxPreference
        android:defaultValue="@bool/mypreference_default"
        android:key="mypreference"
        android:title="@string/mypreference_title" />

    A continuación, utilizar en el código:

    SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(context);
    Boolean value = context.getResources().getBoolean(R.bool.mypreference_default);
    Boolean b = p.getBoolean("mypreference", value);
    • Buena manera de hacer esto. Gracias por compartir!
    • Eso es exactamente lo que estaba buscando, gracias. Una sugerencia más: Definir los recursos que no están en strings.xml pero en un archivo separado (por ejemplo, constants.xml) para evitar la localización.
    • mover las cadenas en un archivo diferente no evitar la localización. El strings.xml nombre de archivo es sólo convención. Cualquier recurso puede ser localizada mediante la colocación en la correcta res/ subcarpeta. Aunque la colocación de la configuración predeterminada en un archivo de recursos es probablemente una buena idea.
    • Estás en lo correcto. Yo sólo estaba tratando de establecer una mejor práctica en el fin de disminuir el riesgo de «no deseados de la traducción».
    • Usted puede poner en values/attrs.xml . De esta manera, que no esté traducido
    • O usted puede hacer: <cadena traducible=»false»
    • ¿cuál es la Boolean value se llama de la Actividad, ¿qué debo reemplazar context con?
    • reemplazar con «esto» o simplemente eliminar – no es necesario cuando se llama a partir de la Actividad.

  2. 11

    Primer lugar usted necesita para definir los valores por defecto en su preferencia archivo XML.
    A continuación, puede rellenar preferencias con valores por defecto en su Actividad principal, llamando al:

    PreferenceManager.setDefaultValues(this, R.xml.preference, false);

    Cuando usted necesita para recuperar una cierta preferencia sólo tiene que llamar:

    int value = prefs.getInt("key", null);

    Ya que sus preferencias se rellenan, usted no obtendrá null valor.

    • Este todavía no lo protege de la posible situación en la que alguien abajo de la línea, se quita una preferencia del XML y se olvida de actualizar el código Java que lo solicite. En esta situación, la aplicación seguirá compilar, pero usted va a terminar con un NullPointerException.
    • Sí, es verdad, pero luego de una Prueba Funcional debe ser escrito para probar si todos los necesarios preferencias se recuperan a partir de XML.
    • en realidad, esto no funciona en absoluto para mí. los valores por defecto no se establecieron después de llamar a este método.
    • ha encontrado una solución para su problema? Estoy atascado en el mismo punto que yo llamo el método, pero los valores no son.
    • Tenga en cuenta que parece que realmente se debería llamar PreferenceManager.setDefaultValues con el último parámetro como true. De hecho, si tiene varios archivos de preferencias de esto es crucial para el segundo archivo se cargue. Llame PreferenceManager.setDefaultValues en todos los archivos de preferencias en la actividad principal.
    • Gracias. Yo uso una combinación de Pawel la respuesta de su setDefaultValues método.
    • Gracias. Yo necesarios para acceder a los valores predeterminados antes de ejecutar las Preferencias de la Actividad, así que me mudé a PreferenceManager.setDefaultValues(this, R.xml.preference, true); a onCreate de rootactivity (MainActivity)

  3. 1

    Crear integer.xml bajo res/values para almacenar constantes enteras.

    En prefereces.xml referencia "@integer/default_brightness"

    En el código context.getResources().getInteger(R.integer.default_brightness)

Dejar respuesta

Please enter your comment!
Please enter your name here