2つのフラグメントがあります。 SecondFragment
およびThirdFragment
。実際、フラグメント間で値を渡すためにナビゲーションコンポーネントを使用しています。このような:
SecondFragment:
val action = SecondFragmentDirections.action_secondFragment_to_thirdFragment().setValue(1)
Navigation.findNavController(it).navigate(action)
ThirdFragmentから値を読み取る方法は次のとおりです。
arguments?.let {
val args = ThirdFragmentArgs.fromBundle(it)
thirdTextView.text = args.value.toString()
}
それはうまくいきます。これで、スタックは次のようになります。
ThirdFragment
SecondFragment
開いたThirdFragmentから前のSecondFragmentに新しいナビゲーションコンポーネントで値を渡すためのオプションはありますか? (ThirdFragmentが終了しているとき)
OnActivityResultについては知っていますが、Nav.Componentが必要以上のソリューションを提供する場合は、それを使用します。
ありがとうございました!
あなたが求めているのはアンチパターンです。あなたはどちらか
設定したい新しい値を使用して、2番目のフラグメントに再度移動します
別のアクティビティで3番目のフラグメントを使用し、startActivityForResult()
で開始します
viewModelまたはある種のシングルトンパターンを使用してデータを保持します(データが不要になったら、必ずデータをクリアしてください)
これらは私の頭に浮かんだパターンのいくつかです。それが役に立てば幸い。