-1

次のように、別のフラグメント A の上にフラグメント B を追加しています。

fragmentManager.beginTransaction().add(R.id.frame_container, fragment).addToBackStack("post_details").commit();

問題は、デバイスを B に戻すときに、A にアンカーが必要なことです。この場合、どのライフサイクル メソッドが呼び出されるのでしょうか?

4

1 に答える 1

3

これは、使用するトランザクションのタイプと、フラグメントをバック スタックに追加したかどうかによって異なります。B をバックスタックに追加し、Activity がライフサイクル イベントを通過しないと仮定して、シナリオを見てみましょう。

  • A を追加 -> B を追加 + addToBackstack -> popBackStack

    この場合、A はライフサイクル イベントを通過しません。

  • A を追加 -> B で置換 + addToBackStack -> popBackStack

    この場合、A は onCreateView->onActivityCreated などを通過します。

もう 1 つの質問ですが、A は B が削除されているかどうかをどのように知ることができますか? 多くの方法がありますが、簡単な方法は、B が独自の onPause で Fragment.isRemoving をチェックすることです。次に、B は、ホストしているアクティビティまたはフラグメント A に、それが削除されていることを通知できます。

于 2015-09-04T21:21:57.980 に答える