我已經在MainFragment(包含)中實作了 NavHost( Navigation Component ),并且它的導航中還有其他三個片段(CategoryFragment、GalleryFragment和PreviewFragment)
NavHost
以上三個片段都sibliing在nav_graph. 我想向我們的 parentFragment( MainFragment )發送一個模型
我嘗試了兩種不同的方式將資料發送到parentFragment (MainFragment)
PreviewFragment.kt on Button Click
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和直接。
uj5u.com熱心網友回復:
你可以試試這些:
requireActivity().supportFragmentManager.setFragmentResult
requireActivity().supportFragmentManager.setFragmentResultListener
uj5u.com熱心網友回復:
由于導航組件中的 childFragment 和 ParentFragment 之間還有另一個 Fragment(NavHostFragment)。我在這里找到了這個 在 ChildFragment 你必須打電話
parentFragment?.parentFragmentManager?.setFragmentResult
在 ParentFragment(具有 NavHost)中
childFragmentManager.setFragmentResultListener
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/415021.html
標籤:
