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