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 konteneramiFrameLayout
zdefiniowano 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.