Предположим, у меня есть Activity, которая содержит два FrameLayouts (назовем их FrameA и FrameB), которые в свою очередь каждый содержат Fragment (назовем их 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()
только удаляет фрагмент из представления и не переводит представление обратно во фрагментэто ранее отображалось.