Mehrere Aufrufe von FragmentTransaction.replace () - nur einer funktioniert nach Änderung der Ausrichtung

Ich benutze den folgenden Code, um meine Benutzeroberfläche mit 2 Fragmenten zu füllen, die Container sindFrameLayoutist in XML definiert. Wenn dieser Code zum ersten Mal aufgerufen wird, d. H., Wenn die App gestartet wird, funktioniert er einwandfrei und meine beiden Fragmente werden wie erwartet angezeigt. Nach einer Konfigurationsänderung (insbesondere Ausrichtung) wird jedoch nur das erste Fragment in der Transaktion angezeigt.

Ich denke nicht, dass es ein Problem mit den Fragmenten selbst ist, denn wenn ich den Code umdrehe, so dass ein Ersetzen vor dem anderen aufgerufen wird, oder umgekehrt, wird dieses Fragment angezeigt. Wenn ich zum Beispiel das Snippet von unten als Leitfaden verwende, werden mDetails angezeigt und mSummary nicht, wenn ich die Aufrufe von mSummary und mDetails ersetze.

Es ist immer der zweite im Block, der fehlt.

// Using tablet layout
} else {
    FragmentManager fm = super.getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    ft.replace(R.id.summary_container, mSummaryFragment);
    ft.replace(R.id.details_container, mDetailsFragment);
    ft.commit();
}

Ich speichere die Fragmente inonSaveInstanceState und restaurieren sie aus demBundle savedInstanceState wenn die Aktivität neu erstellt wird. Ich habe auch versucht, die Transaktion durch Aufrufen in zwei Teile zu unterteilencommit() und dann noch eins holenFragmentTransaction Objekt aber keine Freude da.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage