私はFragment1を持っています。それらで、ボタンを押してDialogFramgentを開始しました。DialogFragment で、ボタンを押して Fragment2 を開始しました。押し戻すと、Fragment1 に戻りますが、DialogFragmnet には戻りません
2 に答える
フラグメントをバックスタックに追加できます。addToBackStack() を呼び出すと、問題が解決するはずです。ドキュメントから直接:「このバックスタックはアクティビティによって管理され、ユーザーは[戻る]ボタンを押すことで以前のフラグメント状態に戻ることができます」. 詳細については、http: //developer.android.com/guide/components/fragments.htmlを参照してください。
碧玉
アクティビティでフラグメントを使用することの優れた機能は、ユーザーの操作に応じて、フラグメントを使用して追加、削除、置換、およびその他のアクションを実行できることです。アクティビティにコミットする変更の各セットはトランザクションと呼ばれ、FragmentTransaction で API を使用してトランザクションを実行できます。また、各トランザクションをアクティビティによって管理されるバック スタックに保存して、ユーザーがフラグメントの変更を逆方向に移動できるようにすることもできます (アクティビティを逆方向に移動するのと同様)。
次のように FragmentManager から FragmentTransaction のインスタンスを取得できます。
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
各トランザクションは、同時に実行する一連の変更です。add()、remove()、および replace() などのメソッドを使用して、特定のトランザクションに対して実行するすべての変更を設定できます。次に、トランザクションをアクティビティに適用するには、commit() を呼び出す必要があります。
ただし、commit() を呼び出す前に、トランザクションをフラグメント トランザクションのバック スタックに追加するために、addToBackStack() を呼び出したい場合があります。このバック スタックはアクティビティによって管理され、ユーザーは [戻る] ボタンを押すことで前のフラグメント状態に戻ることができます。