2016-10-14 46 views
0

我有一個主要活動,使用FragmentManager加載不同片段的RelativeLayout容器。 假設我用兩個事務加載fragment1和fragment2。在按下後退按鈕的情況下,我想返回到當fragment1和fragment2都未加載時的狀態。這可能嗎? 我試過在addToBackStack()方法來使用相同的名稱:Android:添加兩個或更多片段到同一個後臺堆棧狀態

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

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

但這不起作用。如果我按下後退按鈕,fragment2會先消失,然後再次按下fragment1也會消失。任何建議?

+0

@DeeV如果我這樣做的fragment2仍然活着(呈現) – revy

+0

對不起,你是對的。它不會將它包含到後端堆棧中。我認爲你可能需要去做的方式是將兩個容器一起添加到容器中,然後在第二次提交時隱藏/取消隱藏fragment2。這樣,當你按「返回」時,兩者都將被刪除。 – 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

相關問題