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)?

  • Editar el oyente de clave de texto
  • Android: cómo crear una actividad transparente con temas de diálogo
  • Casilla de verificación parcialmente activada en Android?
  • Problemas con el teclado de Android Studio en Ubuntu
  • Java.lang.NoSuchFieldError android / support / v7 / AppCompat /
  • Cómo guardar la posición de desplazamiento de RecyclerView con RecyclerView.State?
  • ¿Cómo puedo abrir la Actividad de configuración de Bluetooth mediante programación?
  • ¿Cómo puedo establecer el margen de un EditText utilizando xml?
  • Intención de iniciar la actividad - pero no llevar al frente
  • SCAN_RESULTS_AVAILABLE_ACTION devolver la lista vacía en Android 6.0
  • Intellij Android esquema de proyecto ¿URI no está registrado?
  • Cómo establecer la altura de filas ListView
  • 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.