2011-01-12 8 views
8

Ho due schermate delle preferenze Android definite nella mia app Android in XML.Fa riferimento a una schermata delle preferenze Android separata da un'altra schermata delle preferenze in XML

Ad esempio, Schermo 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> 

e Screen 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> 

Vorrei schermo 2 per essere uno schermo separato sia accessibile a sé stante, ma vorrei anche le sue preferenze per essere una parte di uno schermo anche. C'è un modo semplice per fare semplicemente riferimento alla schermata 2 dalla schermata 1? Oppure devo semplicemente ripetere le stesse preferenze in una schermata di preferenza secondaria nella schermata 1.

+0

Hai provato con il tag ''? Non sono sicuro che funzioni con PreferenceScreen, ma questo è il modo di includere layout ordinari all'interno di altri layout. Vedi http://developer.android.com/resources/articles/layout-tricks-reuse.html –

+0

Grazie per il suggerimento Mayra. Sfortunatamente sembra limitato al riutilizzo dei widget di layout. Ma non l'ho mai saputo, quindi ho ancora imparato qualcosa! Cheers – Tim

risposta

12

Non ho trovato un modo per "unire" entrambi i file direttamente in XML, ma potresti provare a unirli utilizzando 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... 
} 

Buona fortuna

Tom

+0

Facendolo nel codice è assolutamente bene. Che bello. Grazie per il tuo aiuto Tom – Tim

6

È possibile farlo in XML con un intento:

<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

Volevo revocare la tua risposta, ma il tuo rappresentante è 1.024 e non sono riuscito a cambiare un bel numero di round. –