2011-01-12 10 views
8

Tengo dos pantallas de preferencias de Android definidas en mi aplicación de Android en XML.Hace referencia a una pantalla de preferencias de Android por separado dentro de otra pantalla de preferencias en XML

Por ejemplo, la pantalla 1

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:key="screen1"> 
    <PreferenceCategory android:title="Preferences"> 
     <CheckBoxPreference 
      android:defaultValue="true" 
      android:title="test" 
      android:key="test_pref"/> 
    </PreferenceCategory> 
</PreferenceScreen> 

y Pantalla 2

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:key="screen2"> 
    <CheckBoxPreference 
     android:key="checkbox" 
     android:title="Checkbox"> 
    </CheckBoxPreference> 
</PreferenceScreen> 

quisiera pantalla 2 para ser una pantalla separada para ser accesible en su propio derecho, pero también me gustaría sus preferencias ser parte de la pantalla uno también ¿Hay alguna manera simple de hacer referencia simplemente a la pantalla 2 desde la pantalla 1? ¿O simplemente necesito repetir esencialmente el mismo material de preferencia en una pantalla de subpreferencia en la pantalla 1.

+0

¿Usted intentó usar la etiqueta '' ? No estoy seguro si funciona para PreferenceScreen, pero esa es la manera de incluir diseños normales dentro de otros diseños. Ver http://developer.android.com/resources/articles/layout-tricks-reuse.html –

+0

Gracias por la sugerencia de Mayra. Lamentablemente, parece estar limitado a la reutilización de widgets de diseño. ¡Pero nunca lo supe, así que todavía aprendí algo! Cheers – Tim

Respuesta

12

No encontré la manera de "combinar" ambos archivos directamente en XML, pero podría intentar fusionarlos el uso de Java:

@Override 
public void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    getPreferenceManager().setSharedPreferencesName(Settings.PREFERENCES_NAME); 
    getPreferenceManager().setSharedPreferencesMode(Context.MODE_WORLD_READABLE); 

    // add the first xml 
    addPreferencesFromResource(R.xml.preferences_settings); 
    // add another xml 
    addPreferencesFromResource(R.xml.preferences_mail_settings); 

    // do the things, that need to be done... 
} 

Buena suerte

Tom

+0

Hacerlo en código es absolutamente bueno. Que gran. Gracias por su ayuda. Tom – Tim

6

Usted puede hacer esto en XML con una intención:

<PreferenceScreen android:key="screen1"> 
    <PreferenceScreen android:key="screen2"> 
    <intent android:action="com.example.PREFERENCE_2" /> 
    </PreferenceScreen> 
</PreferenceScreen> 

AndroidManifest.xml:

<activity android:name="com.example.Preference2Activity"> 
    <intent-filter> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <action android:name="com.example.PREFERENCE_2" /> 
    </intent-filter> 
</activity> 
+1

. Quise votar su respuesta, pero su representante es 1.024 y no pude cambiar un buen número redondo. –

Cuestiones relacionadas