Android タブレット アプリケーションの場合、2 つのフラグメントを使用します。画面の左側に 1 つ、右側に 1 つ。右側のフラグメントのボタンをクリックすると、右側のフラグメントの上に別のフラグメントが追加されます。このフラグメントはバックスタックに追加されます。
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(R.id.fragmentlayout, fragment2);
ft.addToBackStack("Fragment2");
ft.commit();
バックスタックは次のようになりました。
[フラグメント 1] -> [フラグメント 2]
左側には、左側のフラグメント (fragment2 と同じ) の上にフラグメントを開き、それをバックスタックに追加するボタンもあります。バックスタックは現在
[フラグメント 1] -> [フラグメント 2] -> [フラグメント 3]
フラグメント 2 には、そのフラグメントを閉じるボタンがあります。
getFragmentManager().popBackStack("Fragment2", FragmentManager.POP_BACK_STACK_INCLUSIVE);
問題は、[フラグメント 2] だけを閉じたい場合、[フラグメント 3] も破棄されることです。呼び出すことで手動でフラグメントを削除できます
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.remove(fragment2).commit();
しかし、バックスタックは残ります
[フラグメント 1] -> [(ゴースト) フラグメント 2] -> [フラグメント 3]
そのため、もう一度押してアプリケーションを閉じる必要があります。
[フラグメント 2] のみをバックスタックから削除し、[フラグメント 3] を画面に残す方法はありますか?