¿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)?
- Métodos del adaptador RecyclerView no llamados
- Importar google-play-service dependencia cruz roja
- ¿Es realmente imposible proteger las aplicaciones de Android de ingeniería inversa?
- ¿Hay alguna biblioteca o algoritmo para el calendario persa (Shamsi o Jalali) en Android?
- java.lang.ClassCastException: android.widget.TextView. ¿Por qué estoy recibiendo esto?
- Importar código fuente de Android en eclipse
- ¿Cómo mantener la sesión de inicio de sesión de usuario?
- Vista predeterminada del cajón de navegación a ExpandableListView
- Android.view.InflateException: Línea # 6 del archivo XML binario: Error al inflacionar el fragemnt de la clase
- ¿Cómo mantener los nombres de métodos de clase que anulan \ implementa otro método de ser ofuscado?
- Diferentes respuestas entre el sitio de Google y la API de Google
- Error: "El proceso de daemon recién creado tiene un contexto diferente del esperado"
- ¿Cómo desactivo explícitamente el modo de flujo en bloque para las conexiones HTTP en 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,
- Error al recuperar información del servidor RPC: s-7: AEC-0 en Google Play?
- Obtener la posición del cursor en Android en Editar texto?