繁体   English   中英

导航组件:将安全参数从活动传递到片段

[英]Navigation Component: pass safeArgs from activity to a fragment

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

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

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

我可以得到参数:

val args = MyActivity.fromBundle(intent.extras)

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

Navigation 1.0.0-alpha07修复了将参数传递给图形起始目的地的功能请求

要使用它,您需要:

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

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

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

val args = MyActivity.fromBundle(intent.extras)
navController.navigate(R.id.myActivityFragment, args.toBundle())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM