Wielokrotne wywołania FragmentTransaction.replace () - tylko jedna działa po zmianie orientacji

Używam następującego kodu do wypełnienia mojego interfejsu użytkownika dwoma fragmentami, czyli konteneramiFrameLayoutzdefiniowano w XML. Po raz pierwszy ten kod jest wywoływany, tzn. Gdy aplikacja się uruchamia, działa dobrze i oba moje fragmenty są wyświetlane zgodnie z oczekiwaniami. Jednak po zmianie konfiguracji (konkretnie orientacji) pokazywany jest tylko pierwszy fragment transakcji.

Nie wydaje mi się, żeby był to problem z samymi fragmentami, ponieważ jeśli odwrócę kod tak, że jedna zamiana zostanie wywołana przed drugą lub odwrotnie, ten fragment zostanie wyświetlony. Tak więc na przykład z fragmentem poniżej jako przewodnikiem, jeśli zamienię mSummary i mDetails zastąpią wywołania, wtedy mDetails zostaną wyświetlone i mSummary nie będzie.

Zawsze brakuje drugiego w bloku.

// 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();
}

Zapisuję fragmenty wonSaveInstanceState i przywracanie ich zBundle savedInstanceState kiedy aktywność zostanie odtworzona. Próbowałem też rozbić transakcję na dwie części, dzwoniąccommit() a potem zdobycie kolejnegoFragmentTransaction obiekt, ale tam nie ma radości.

questionAnswers(3)

yourAnswerToTheQuestion