我们有一个遗留的应用程序,我们开始将其迁移到 Jetpack Compose 平台。
该应用程序只有一个 Activity,并使用 Navigation 组件及导航 XML 图形在 Fragment 之间进行导航。
我们采用以下方法: - 每次迁移一个 Fragment - 为每个 Fragment 制作一个 @Composable 屏幕,提供与该 Fragment 相同的 UI。 - 从 Fragment 的 onCreateView() 方法中将内容设置为新创建的屏幕。
现在,假设我们有一个 Fragment1,其中包含一些操作以导航到 Fragment2。在原始代码中,我们会在 Fragment1 中调用以下代码:
我们采用以下方法: - 每次迁移一个 Fragment - 为每个 Fragment 制作一个 @Composable 屏幕,提供与该 Fragment 相同的 UI。 - 从 Fragment 的 onCreateView() 方法中将内容设置为新创建的屏幕。
现在,假设我们有一个 Fragment1,其中包含一些操作以导航到 Fragment2。在原始代码中,我们会在 Fragment1 中调用以下代码:
NavHostFragment.findNavController(this).navigate(directionToFragment2)
当创建一个可组合以替换 Fragment1 UI 时,我们如何从该可组合实现导航到 Fragment2? 在可组合中,我们可以调用:
val navController = rememberNavController()
但这似乎是一个不同的导航控制器,而不是片段使用的那个。 从可组合项获取与片段使用的相同导航控制器的方法是否存在?
目前我们唯一看到的选择是将片段的导航控制器作为参数传递给可组合项,但这看起来并不完美。
navigateTo: () -> Unit
这样的参数,如此处所述。 - Gabriele Mariotti