Несколько вызовов FragmentTransaction.replace () - только один работает после изменения ориентации
Я использую следующий код, чтобы заполнить мой интерфейс 2 фрагментами, контейнерыFrameLayout
определены в XML. Это первый раз, когда этот код называется, т.е. когда приложение запускается, оно работает нормально, и оба моих фрагмента отображаются, как и ожидалось. Однако после изменения конфигурации (в частности, ориентации) отображается только первый фрагмент в транзакции.
Я нене думаю, что этоПроблема с самими фрагментами, потому что, если я переверну код, чтобы одна замена вызывалась раньше другой, или наоборот, этот фрагмент будет отображаться. Так, например, при использовании фрагмента снизу в качестве руководства, если я поменяю местами вызовы mSummary и mDetails, то будут отображены mDetails, и mSummary выиграет 'т.
Это's всегда второй в блоке, который отсутствует.
// 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();
}
м сохраняя фрагменты вonSaveInstanceState
и восстановление их изBundle savedInstanceState
когда деятельность воссоздается. Я также попытался разбить транзакцию на две части, позвонивcommit()
а затем получить другойFragmentTransaction
объект, но нет радости там.