我在我的应用中使用 Jetpack Navigation 组件制作导航。我的应用有 3 个屏幕,它们都是通过 Fragment 实现的:
- 搜索屏幕
- 列表屏幕
- 详细信息屏幕
- 搜索屏幕
- 列表屏幕
- 详细信息屏幕
当用户按下搜索按钮(在 搜索屏幕
上),应用会导航到 列表屏幕
并加载结果并显示它们。用户选择其中一个结果并导航到 详细信息屏幕
。如果只有一个结果,则应用程序自动从 列表屏幕
导航到 详细信息屏幕
,有效地跳过了列表屏幕。
问题在于返回导航:当有多个结果时,我需要返回到 列表屏幕
,但如果只有一个结果,则需要返回到 搜索屏幕
。我只想调用 navigateUp
,但这将把我带到 列表屏幕
(在所有情况下),如果只有一个结果,则再前往详细信息屏幕
。
直接使用 FragmentTransaction
时,我们可以使用 replace
替换当前片段,并仅在稍后要返回时调用 addToBackStack
。
使用导航组件时,我们可以直接 navigate
,它的行为就像 replace
+ addToBackStack
。
如何使用架构组件实现“替换而不添加到返回堆栈”的行为?