Preferencias anidadas.xml
¿Es de alguna manera posible incluir un preferences.xml
en otro, como se puede hacer para las disposiciones con la etiqueta <include />
?
Digamos:
- Android: ¿Cómo restablecer / eliminar las preferencias de la aplicación durante las pruebas de unidad?
- Cómo borrar las viejas preferencias al actualizar la aplicación de Android?
- ¿Es seguro guardar los tokens de acceso / actualización de Oauth2 en las Preferencias compartidas de Android?
- ¿Cómo obtener preferencias de tono en tiempo de ejecución?
- DefaultValue de archivo de preferencia de xml no está almacenado - ¿por qué?
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceScreen android:title="@string/pref_group_title_visual"> <include preferences_filename="xml/pref_visual"/> </PreferenceScreen> ...
- Android: ¿Cómo navegar de nuevo desde la sub-pantalla de preferencia a través de la barra de acción en xml?
- ¿Cuál es la diferencia entre las entradas y los valores de entrada en android listPreferences xml?
- Preferencias de Android: Valores predeterminados incorrectos DESPITE "setDefaultValues"
- SharedPreference Cambios no reflejados en mi servicio de fondo de pantalla
- Uso de la preferencia de lista en Android
- Utilizar una subclase personalizada de SharedPreferences con PreferenceActivity o PreferenceFragment
- ¿Se ha pulsado el botón de preferencia?
- Pantalla de Preferencias de Android sin XML
Solución aquí es inflar los dos archivos de preferencia de PreferencesActivity. Por ejemplo:
addPreferencesFromResource(R.xml.options); addPreferencesFromResource(R.xml.additional_options);
La solución alma muestra obras. Se puede ampliar para mostrar preferencias solamente si eres el desarrollador que usa una versión sin firma de la aplicación;)
addPreferencesFromResource(R.xml.options); addPreferencesFromResource(R.xml.additional_options); if (BuildConfig.DEBUG) { addPreferencesFromResource(R.xml.developer_options); }
He creado una entrada de blog sobre este problema y tengo un ejemplo completo de código de trabajo disponible para descargar. http://androidfu.blogspot.com/2012/05/developer-debug-with-nested-preferences.html
Para lograr realmente el efecto de anidamiento, puede utilizar esta técnica para reubicar las preferencias cargadas en un grupo ya cargado.
PreferenceCategory notifications = (PreferenceCategory) getPreferenceScreen ().findPreference (PreferenceKey.pref_notifications.name ()); addPreferencesFromResource (R.xml.pref_notifications, notifications);
Donde el addPreferencesFromResource mejorado se define como:
private void addPreferencesFromResource (int id, PreferenceGroup newParent) { PreferenceScreen screen = getPreferenceScreen (); int last = screen.getPreferenceCount (); addPreferencesFromResource (id); while (screen.getPreferenceCount () > last) { Preference p = screen.getPreference (last); screen.removePreference (p); // decreases the preference count newParent.addPreference (p); } }
Funciona para cualquier PreferenceGroup como PreferenceScreen y PreferenceCategory.
No, parece imposible. Pero hay una solución sencilla. Puede realizar otra PreferenceActivity
que cargue la PreferenceScreen
anidada. Y en el archivo principal preference.xml necesita crear un objeto Preference
y establecer un objeto Intent
para él en código (usando el método setIntent()
). Este Intent
debe ser usado para crear la segunda PreferenceActivity
.
- Cómo configurar la fuente personalizada para una aplicación completa en Android?
- Logotipo ActionBar centrado y Elementos de acción en los lados