2017-08-02 9 views
0

フラグメントBをsetTargetFragmentでコールするフラグメントAを持っています。 フラグメントBが特定の操作を完了すると、getTargetFragment()。onActivityResult()を呼び出します。getTargetFragment()。onActivityResult()はフラグメントを閉じません。

これはうまくいきます(フラグメントAのコールバックonActivityResultは必要に応じて呼び出されます)、フラグメントBは切り離されたり削除されたりしません。ユーザーは何らかの理由でフラグメントBにとどまっています。そんなことがあるものか? oActivityResultはフラグメントをスタックから削除してはいけませんか、あるいは少なくともユーザーがフラグメントAを再度見ることはできませんか?

答えて

1

このプロセスは、結果を設定した後にfinish()と呼ぶ必要があるアクティビティとほぼ同じです。フラグメントの場合は、finish()と同じ方法で現在のアクティビティをポップするように、popBackStack()にコールして現在のフラグメントを削除する必要があります。

+0

2つのフラグメント間でデータを転送するための通常のメソッドと、TargetFragment onActivityResultを使用するだけの違いは何ですか? どちらの場合も、フラグメントマネージャの状態はまったく変わりません。 – BVtp

+0

バックスタックをポップすると、前のフラグメントにデータを渡すことはできません。アクティビティ内でfinish()前のアクティビティのデータを渡すことはありません。ポイントは、これらのインスタンスを再作成/取得する必要はなく、結果とポップを設定するだけです。 – Ricardo

+0

本当に変です。私はフラグメントBのonActivityResultを呼び出す2つのケースを持っています。そのうちの1つでは、onActivityResultはフラグメントBを削除し、もう片方はそれを削除し、popBackStackを呼び出す必要があります。あなたがなぜ知っているのですか – BVtp

関連する問題