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

Jav*_*oba 9 navigation android android-architecture-components android-jetpack

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

val action = MyFragmentDirections.actionMyActivity(arg1, arg2)
Navigation.findNavController(view).navigate(action)  
Run Code Online (Sandbox Code Playgroud)

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

我可以得到参数:

val args = MyActivity.fromBundle(intent.extras)
Run Code Online (Sandbox Code Playgroud)

问题Directions在于此活动没有文件,因此我无法传递参数。

ian*_*ake 11

导航1.0.0-alpha07修复了将参数传递到图形的起始目标的功能请求

要使用此功能,您需要:

  1. app:navGraph从您的属性中删除该属性NavHostFragment
  2. 呼叫 findNavController(R.id.your_nav_host_fragment).setGraph(R.navigation.your_graph, intent.extras)

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


Jav*_*oba 5

我不知道是否推荐这样做,但它正在起作用:

val args = MyActivity.fromBundle(intent.extras)
navController.navigate(R.id.myActivityFragment, args.toBundle())
Run Code Online (Sandbox Code Playgroud)