2016-10-14 17 views
0

RelativeLayoutコンテナの主なアクティビティは、FragmentManagerを使用して異なるフラグメントを読み込みます。 2つのトランザクションでfragment1とfragment2をロードします。戻るボタンが押された場合、fragment1とfragment2の両方がロードされていない状態に戻りたいと思います。これは可能ですか? 私はaddToBackStack()メソッドに同じ名前を使用することを試みた:Android:同じバックスタック状態に2つ以上のフラグメントを追加する

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番目のコミットで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

関連する問題