Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Dónde almacenar las claves de preferencias de Android?

Cuando creo actividad de preferencia, defino todas las preferencias en el archivo xml. Cada preferencia tiene una clave definida en este xml. Pero cuando accedo a las preferencias escribo:

SharedPreferences appPreferences = PreferenceManager.getDefaultSharedPreferences(this); boolean foo_value = appPreferences.getBoolean("foo_key_defined_in_xml", false); 

¿Hay alguna forma de evitar la referencia a "foo_key_defined_in_xml" de forma codificada? Tal vez hay una posibilidad de hacer referencia a ella en forma de estilo R (no se refieren a la cadena)?

  • Buscar número de marcación mientras llama.
  • Cómo utilizar D-pad navegar cambiar entre la fila de listview y sus decendants (soporte de Google-TV)
  • ¿Qué entorno de programación móvil recomienda para un inicio?
  • VideoView no se inicia cuando está invisible
  • ¿Cómo anular (o ocultar) los atributos de estilo definidos en el proyecto de la biblioteca de Android?
  • Problema al reducir el tamaño de la barra de clasificación.
  • Realizar una pausa de actividad que no se reanuda después de volver a crear el método
  • Cómo hacer que RatingBar muestre cinco estrellas
  • Error no detectado: INVALID_STATE_ERR: excepción DOM 11
  • Sprite tamaño en el tamaño de pantalla diferente Andengine Android
  • Android: Hacer la superposición de Actionbar
  • Master-detail Uso de ContentResolver.applyBatch ()?
  • 5 Solutions collect form web for “¿Dónde almacenar las claves de preferencias de Android?”

    He descubierto que es posible almacenar claves en strings.xml y hacer referencia a ellas desde preferences.xml como todos los demás valores android:key="@string/preference_enable" .

    En código puede hacer referencia a la clave escribiendo getString(R.string.preference_enable)

    Puede marcar la cadena para no ser traducida usando una <xliff:g> . Ver lista de verificación de localización

     <string name="preference_enable"><xliff:g id="preference_key">enable</xliff:g></string> 

    Prueba getString(R.string.key_defined_in_xml) .

    ¿Qué pasa con el uso de una clase de ayuda para ocultar el getString () – instanciar el ayudante una vez en cada actividad o servicio. Por ejemplo:

     class Pref { final String smsEnable_pref; final String interval_pref; final String sendTo_pref; final String customTemplate_pref; final String webUrl_pref; Pref(Resources res) { smsEnable_pref = res.getString(R.string.smsEnable_pref); interval_pref = res.getString(R.string.interval_pref); sendTo_pref = res.getString(R.string.sendTo_pref); customTemplate_pref = res.getString(R.string.customTemplate_pref); webUrl_pref = res.getString(R.string.webUrl_pref); } } 

    Usted podría utilizar un "keys.xml" archivos en "res / valores", pero debe poner algo como esto, de esta manera usted no debe tener problema cuando se utilizan varios idiomas:

      <resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation"> <string name="key1">key1</string> <string name="key2">key2</string> ... </resources> 

    Entonces usted podría referenciarlo como una cadena normal en xml:

     .... android:key="@string/key1" .... 

    O en su código java por ejemplo:

     SwitchPreference Pref1= (SwitchPreference) getPreferenceScreen().findPreference(getString(R.string.key1)); 

    Por lo que sé, no hay mejor manera de hacer referencia a las claves de preferencia (aparte de tal vez usar una cadena final estática para almacenar la cadena en la clase).

    El ejemplo dado en el SDK hace lo mismo que lo que has dado en tu ejemplo,

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.