Предположим, что у меня есть Activity, который содержит два FrameLayouts (пусть их называют FrameA и FrameB), которые, в свою очередь, содержат фрагмент (пусть их называют FragmentA1 и FragmentB1 соответственно). Теперь я совершаю серию транзакций отдельных фрагментов, используя код, похожий на следующий...
getFragmentManager()
.beginTransaction()
.replace(frameId, fragment)
.addToBackStack(null)
.commit();
... так что я заменяю FragmentA1 в FrameA на FragmentA2, тогда я заменяю FragmentB1 в FrameB на FragmentB2, а затем заменяю FragmentA2 в FrameA на FragmentA3, а затем заменяю FragmentB2 в Frame2 на FragmentB3, а конечное состояние выглядит как рисунок выше (где видны только FragmentA3 и FragmentB3).
Если я правильно понял, как работает задний стек, нажатие "назад" будет чередовать фрагменты фрагментов между FrameA и FrameB (отражая, как я их добавил).
Кто-нибудь знает, можно ли выборочно вывести последнюю транзакцию в FrameA или FrameB? (т.е. если бы я нажал "Pop FrameA", тогда FrameA был бы переведен обратно с FragmentA3 на FragmentA2, и вместо этого, если бы я нажал "Pop FrameB", тогда FrameB был бы переведен обратно из FragmentB3 в FragmentB2)
Дополнение: Я знаю, что могу добавить последний фрагмент в данный FrameLayout с помощью метода
FragmentManager.findFragmentById(int framelayoutId)
, но вызовFragmentTransaction.remove(fragment).commit()
удаляет только фрагмент из представления и не переводит View назад к фрагменту, который он ранее отображал.