Ho un PreferenceActivity con diversi frammenti:Come si chiama un PreferenceFragment specifico da PreferenceActivity?
R.xml.preferences: (abbreviato per migliorare la leggibilità):
<?xml version="1.0" encoding="utf-8"?>
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
<header android:fragment="fragments.Fragment1" android:id="@+id/fragment1" [...] />
<header android:fragment="fragments.Fragment2" android:id="@+id/fragment2" [...] />
[...]
</preference-headers>
SettingsActivity:
public class SettingsActivity extends PreferenceActivity {
@Override
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.preferences, target);
}
}
Questo mostrerà una voce di lista con fragments.Fragment1
, fragments.Fragment2
, ... se SettingsActivity
viene avviato.
Ma ora voglio passare un pacchetto tale che un PreferenceFragment specifico viene aperta quando si inizia l'attività:
quindi aggiunto questo SettingsActivity:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null && savedInstanceState.getBoolean("shortcut")) {
// directly jump to fragments.Fragment1
}
}
Ho provato a caricare il frammento via getFragmentManager().findFragmentById(R.id.fragment1)
, ma restituisce null
. Ma anche se avessi l'istanza corretta, non saprei come richiamarla. Inoltre, la chiamata a loadHeadersFromResource(R.xml.preferences_fragment1, target);
non funziona: verrà generata una RuntimeException "Il documento XML deve iniziare con tag; foundPreferenceScreen nel file XML binario". Non ho più idee e anche una ricerca su SO e Google non ha restituito risultati rilevanti.
Quindi la mia domanda è: è possibile caricare direttamente un PreferenceFragment (ad esempio frammenti.Fragment1) dal metodo onCreate di Activitiy? Se é cosi, come?
Esattamente quello che cercavo per. Grazie! –
Davvero fantastici hanno supportato questo. Grazie per la condivisione. Ha funzionato bene anche per me. – lepert