を含むアクティビティがありFrameLayout
ます。アクティビティには 4 つのステップが表示され、各ステップはFragment
. さらに前に戻りたいとき、フラグメントを再作成したくありません。それらを保持し、フラグメント内のビューを単純に置き換えたいと思います。
私は最初にフラグメントを作成し、次のようにバックスタックに追加していました。
Fragment step= new Frag1ActCompleteFragsCommTrack();
FragmentTransaction ft= getSupportFragmentManager().beginTransaction();
ft.add(step, ""+onStepNr);
ft.addToBackStack(null);
ft.commit();
表示されていないことに注意してください。作成してバックスタックに追加するだけです。
framelayout
したがって、表示するフラグメントの 1 つが必要になったら、それを追加します (この例では、最初の追加であるため、からフラグメントを削除しません)。
FragmentTransaction ft= getSupportFragmentManager().beginTransaction();
ft.add(R.id.my_frameLayout, step);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
だから:問題は私が得ることです
原因: java.lang.IllegalStateException: Fragment already added: Frag1ActCompleteFragsCommTrack{410dcb20 #0 id=0x7f050041 -1}
しかし、初めてフレームレイアウトに直接追加することはできないと思います。そうしないと、次に交換するときにフラグメントを失う可能性があります。私は正しいですか?それで..フレームレイアウトで互いに交換できるフラグメントを保持するためのベストプラクティスは何ですか?