在我的应用程序中,我有一个 Activity,其余的是片段。现在我正在尝试按如下方式运行。假设我有片段 A(家庭)、B 和 C。场景是这样的:
我从 A 导航到 B,它显示了我通过 Safe args 从 A 传递的一些数据。然后我从 B 导航到 C 以编辑 B 中显示的数据。然后我从 C 回到 B 并且 B 向我显示 C 中编辑的数据。最后,我回到家。就这样。
我通过 Safe args 传递数据,但问题是,当我从 C 回到 B 时,我无法导航回 A,因为这navigateUp()
将我带回 C 而不是去 A。
导航方法:
- 从 A 到 B:
Navigation.findNavController(requireActivity(), R.id.nav_host_fragment).navController().navigate(HomeFragmentDirections.actionNavHomeToNavB(some_string_data))
- 从 B 到 C:
Navigation.findNavController(requireActivity(), R.id.nav_host_fragment).navController().navigate(BFragmentDirections.actionNavBToNavC(string_data_in_B))
- 从 C 到 B:
Navigation.findNavController(requireActivity(), R.id.nav_host_fragment).navController().navigate(CFragmentDirections.actionNavCToNavB(edited_string_data_from_B))
- 从 B 到 A:
Navigation.findNavController(requireActivity(), R.id.nav_host_fragment).navController().navigateUp()
我还尝试navigateUp()
在返回 B 之前使用,这会引发目的地不存在的异常,并且我尝试使用popBackStack()
从堆栈中取出 C,以便navigateUp()
B 中的可以将我带回主页。还没有成功。