导航组件:将safeArgs从活动传递到片段

问题描述 投票:5回答:2

我有两个图,因此第一个图从一个片段移动到将safeArgs传递给活动的活动。

val action = MyFragmentDirections.actionMyActivity(arg1, arg2)
Navigation.findNavController(view).navigate(action)  

现在在第二个中,我想将这些参数从MyActivity传递给属于此活动的片段。

我可以得到args:

val args = MyActivity.fromBundle(intent.extras)

问题是这个活动没有Directions文件,所以我不能传递参数。

android navigation android-architecture-components android-jetpack
2个回答
8
投票

Navigation 1.0.0-alpha07修复了feature request,用于将参数传递到图的起始目的地。

要使用它,您需要:

  1. app:navGraph中删除NavHostFragment属性
  2. 打电话给findNavController(R.id.your_nav_host_fragment).setGraph(R.navigation.your_graph, intent.extras)

使用你之前在R.id标签上的NavHostFragmentR.navigationapp:navGraph。通过将参数传递给setGraph调用,您的起始目标将直接获取参数,而无需再次调用navigate(默认情况下,这将在您的后台堆栈上创建目标的新实例 - 而不是您想要的)。


0
投票

我不知道这是否是推荐的,但是它有效:

val args = MyActivity.fromBundle(intent.extras)
navController.navigate(R.id.myActivityFragment, args.toBundle())
© www.soinside.com 2019 - 2024. All rights reserved.