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:

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

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 utilizar addPreferencesFromResource para android 2.X?
  • Pantalla de Preferencias de Android sin XML
  • ¿Cómo mantener la configuración del idioma de la aplicación después de reiniciar el dispositivo?
  • ¿Es la lectura / escritura preferencias una operación costosa?
  • Preferencia de tono de tono
  • ¿Por qué Custom DialogPreference no se activa en onSharedPreferenceChanged?
  • ¿Cuál es el nombre de archivo utilizado por defecto las preferencias compartidas?
  • ¿Cómo hacer que SharedPreferences de una PreferenceActivity esté configurada como predeterminada en Android?
  • Actividad de preferencia en el oyente de clics de preferencia
  • Cómo establecer el resumen de preferencias edittext y hacer que se pegue
  • Obtener preferencias en AppWidget Provider
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.