フラグメントBをsetTargetFragmentでコールするフラグメントAを持っています。 フラグメントBが特定の操作を完了すると、getTargetFragment()。onActivityResult()を呼び出します。getTargetFragment()。onActivityResult()はフラグメントを閉じません。
これはうまくいきます(フラグメントAのコールバックonActivityResultは必要に応じて呼び出されます)、フラグメントBは切り離されたり削除されたりしません。ユーザーは何らかの理由でフラグメントBにとどまっています。そんなことがあるものか? oActivityResultはフラグメントをスタックから削除してはいけませんか、あるいは少なくともユーザーがフラグメントAを再度見ることはできませんか?
2つのフラグメント間でデータを転送するための通常のメソッドと、TargetFragment onActivityResultを使用するだけの違いは何ですか? どちらの場合も、フラグメントマネージャの状態はまったく変わりません。 – BVtp
バックスタックをポップすると、前のフラグメントにデータを渡すことはできません。アクティビティ内でfinish()前のアクティビティのデータを渡すことはありません。ポイントは、これらのインスタンスを再作成/取得する必要はなく、結果とポップを設定するだけです。 – Ricardo
本当に変です。私はフラグメントBのonActivityResultを呼び出す2つのケースを持っています。そのうちの1つでは、onActivityResultはフラグメントBを削除し、もう片方はそれを削除し、popBackStackを呼び出す必要があります。あなたがなぜ知っているのですか – BVtp