2016-10-14 6 views
0

У меня есть основное действие с контейнером RelativeLayout, где я загружаю разные фрагменты, используя FragmentManager. Скажем, я загружаю фрагмент1 и фрагмент2 двумя транзакциями. В случае нажатия кнопки «Назад» я хочу вернуться в состояние, когда оба фрагмента1 и фрагмент2 не были загружены. Это возможно? Я пытался использовать то же имя в методе addToBackStack():Android: добавьте два или более фрагмента в одно и то же состояние backstack

mFragmentManager.beginTransaction().replace(R.id.activity_main, fragment1).addToBackStack("SameState").commit(); 

mFragmentManager.beginTransaction().add(R.id.activity_main, fragment2).addToBackStack("SameState").commit(); 

, но это не работает. Если я нажимаю кнопку назад, фрагмент2 сначала исчезает, а затем снова отжимается фрагмент1. Любое предложение?

+0

@DeeV, если я так делаю, фрагмент2 все еще жив (вынесен) – revy

+0

Извините, вы правы. Он не будет включать его в задний стек. Я думаю, что вам, возможно, придется это сделать, добавьте оба контейнера вместе, а затем добавьте, вы скрываете/скрываете фрагмент2 во второй фиксации. Таким образом, когда вы нажмете «назад», оба будут удалены. – DeeV

ответ

0

Попробуйте это:

mFragmentManager.beginTransaction() 
.replace(R.id.activity_main,fragment1) 
.addToBackStack(null) 
.commit(); 

getSupportFragmentManager().popBackStack(); // Pop the first transaction 
mFragmentManager.beginTransaction() 
.replace(R.id.activity_main,fragment2) 
.addToBackStack(null) 
.commit(); 

В этот момент, когда вы нажимаете кнопку назад, она будет просто вернуть последнюю транзакцию (FRAGMENT2 замена).

+0

Пробовал это, но крушение приложения ... и без ошибок в журнале я не знаю, почему – revy