Несколько вызовов 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 объект, но нет радости там.

Ответы на вопрос(3)

Ваш ответ на вопрос