如何使用 Android 导航将数据传递到前一个片段?
How can I pass data to the previous fragment using Android Navigation?
我的应用程序以 NewAdFragment
开头,在这个片段中,有一个按钮允许用户选择类别,当用户单击该按钮时,我将把他导航到 ChooserFragment
将类别列表作为参数传递,此片段中有 RecyclerView 并显示类别。
我想要什么?我想要当用户从 RecyclerView 中选择一个项目,然后它必须返回到 NewAdFragment
特定数据。
我可以通过很多方法解决这个问题,但也许导航组件库中已经存在一种方法。
最好的方法是什么?
尝试实现下面提到的代码块here:
片段 A
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
val navController = findNavController();
// We use a String here, but any type that can be put in a Bundle is supported
navController.currentBackStackEntry?.savedStateHandle?.getLiveData<String>("key")?.observe(
viewLifecycleOwner) { result ->
// Do something with the result.
}
}
片段 B
navController.previousBackStackEntry?.savedStateHandle?.set("key", result)
navController.popBackStack()
你也可以查看this
我的应用程序以 NewAdFragment
开头,在这个片段中,有一个按钮允许用户选择类别,当用户单击该按钮时,我将把他导航到 ChooserFragment
将类别列表作为参数传递,此片段中有 RecyclerView 并显示类别。
我想要什么?我想要当用户从 RecyclerView 中选择一个项目,然后它必须返回到 NewAdFragment
特定数据。
我可以通过很多方法解决这个问题,但也许导航组件库中已经存在一种方法。
最好的方法是什么?
尝试实现下面提到的代码块here:
片段 A
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
val navController = findNavController();
// We use a String here, but any type that can be put in a Bundle is supported
navController.currentBackStackEntry?.savedStateHandle?.getLiveData<String>("key")?.observe(
viewLifecycleOwner) { result ->
// Do something with the result.
}
}
片段 B
navController.previousBackStackEntry?.savedStateHandle?.set("key", result)
navController.popBackStack()
你也可以查看this