2016-12-09 4 views
0

私はが全てを作っているとします。FragmentTransaction。したがって、別のフラグメントを開く必要がある場合、各フラグメント内で。断片仕上げ自体を作る方法

まず、bundleはnewIntent()を使用してHomeActivityに戻ります。次に、ホームアクティビティは、バンドル内のデータに従って、前のフラグメントによって要求された必要なフラグメントを開きます。後ろのボタンを押すと同じように多くのフラグメントを開いた後、私は(私が複数回開いた場合)押した電流を含むすべての前のフラグメントに戻します。
だから、)(私は以前の断片に行くことによって、再びそれを見ることができないように私は、以前のすべてのフラグメント履歴から戻ってヒットしている現在のフラグメントを完了する方法

+0

同じアクティビティをすべて終了する必要がある場合は、finishAffinity()関数を使用します。 1回のクリックですべての親アクティビティーを終了します。 – Noorul

答えて

1
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
fragmentTransaction.replace(containerId, fragment, fragment.getClass().getSimpleName()); 
fragmentTransaction.addToBackStack("[Fragment Name as Flag]"); 
fragmentTransaction.commit(); 

だけでbackstack追加私はちょうどあなたのフラグメントトランザクションからこのコードを削除

addToBackStack("null") 

フラグメントのトランザクションは1と同じフラグメントを開いたカウントされます、そしてときpopBackStackが、それは同じ旗で

1

をすべてのスタックをクリアしますので、フラグメントタグ、それがあなたを助けることを願ってください。

1

バックスタックにフラグメントを追加する場合は、fragmentTransaction.addToBackStack("[Fragment Name as Flag]");でフラグメントを追加します。これにより、トランザクションが記憶され、スタック上のフラグメントで戻ることになります。

backStackにフラグメントを追加したくない場合は、フラグメントトランザクション中にfragmentTransaction.addToBackStack("[Fragment Name as Flag]");を使用しないでください。

0

私はあなたの知識豊かな答えを与えるためにすべてのためにしかし、私は私が望んでいたパブリック静的ブール変数を定義する別の解決策を見つけることは2回以上のスタックに表示されるべきではありません。そのフラグメントが破棄されるたびに、boolean変数の値がtrueになります(そして、onStart()では、バックスタックから来たときにその値をチェックし、さらにアクションを起こします)、backを打つときにそのフラグメントが再び現れるのを防ぎます。あなたの参加のためにすべてに感謝します。