Ich habe einen PreferenceActivity mit mehreren Fragmenten:Wie rufe ich ein bestimmtes PreferenceFragment von einer PreferenceActivity auf?
R.xml.preferences: (zur besseren Lesbarkeit gekürzt):
<?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);
}
}
Dies wird zeigen, einen Listeneintrag mit fragments.Fragment1
, fragments.Fragment2
, ... wenn SettingsActivity
gestartet wird.
Aber jetzt möchte ich ein Bündel so passieren, dass eine bestimmte PreferenceFragment geöffnet wird, wenn die Aktivität beginnen:
so habe ich dies zu SettingsActivity:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null && savedInstanceState.getBoolean("shortcut")) {
// directly jump to fragments.Fragment1
}
}
Ich versuchte, das Fragment zu laden über getFragmentManager().findFragmentById(R.id.fragment1)
, aber dies gibt null
zurück. Aber selbst wenn ich die richtige Instanz hätte, würde ich nicht wissen, wie ich sie aufrufen soll. Auch das Aufrufen von loadHeadersFromResource(R.xml.preferences_fragment1, target);
funktioniert nicht - Dies wird eine RuntimeException auslösen "XML-Dokument muss mit Tag; foundPreferenceScreen bei Binär XML-Datei starten". Ich habe keine Ideen mehr und auch eine Suche auf SO und Google hat keine relevanten Ergebnisse zurückgegeben.
Meine Frage ist also: Ist es möglich, ein PreferenceFragment (z. B. fragments.Fragment1) direkt von der onCreate-Methode von Activitiy zu laden? Wenn das so ist, wie?
Genau das, was ich gesucht habe zum. Vielen Dank! –
Wirklich cool haben sie das unterstützt. Danke für das Teilen. Es hat auch gut für mich funktioniert. – lepert