【发布时间】:2022-01-15 12:00:18
【问题描述】:
我已经在 MainFragment(包含
NavHost)中实现了 NavHost(Navigation Component),它的导航中还有另外三个片段(CategoryFragment、GalleryFragment 和 PreviewFragment)
以上三个片段是nav_graph中的sibliing。我想将模型发送到我们的 parentFragment(MainFragment)
我尝试了两种不同的方式将数据发送到 parentFragment(MainFragment)
PreviewFragment.kt 按钮点击
parentFragmentManager.setFragmentResult("requestKey", bundleOf("bundleKey" to args.photo.imageUrl))
findNavController().previousBackStackEntry?.savedStateHandle?.set("requestKey", args.photo.imageUrl)
MainFragment.kt 0nViewCreated
navController.currentBackStackEntry?.savedStateHandle?.getLiveData<String>("requestKey")?.observe(
viewLifecycleOwner) { result ->
Toast.makeText(requireContext(), "$result in MainFragment", Toast.LENGTH_SHORT).show()
}
childFragmentManager.setFragmentResultListener("requestKey") { requestKey, bundle ->
// We use a String here, but any type that can be put in a Bundle is supported
val result = bundle.getString("bundleKey")
Toast.makeText(requireContext(), "$result in MainFragment", Toast.LENGTH_SHORT).show()
// Do something with the result
}
我看过帖子说 FragmentManager 应该相同来处理片段结果 api。
我试过 parentFragmentManager , childFragmentManager 和直接。
【问题讨论】:
-
你试过safeArgs发送数据吗?..Here are the supported types
标签: android android-fragments navigation