代码之家  ›  专栏  ›  技术社区  ›  JavierSegoviaCordoba

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

  •  2
  • JavierSegoviaCordoba  · 技术社区  · 6 年前

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

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

    在第二个例子中,我想把这些论点从 MyActivity 属于此活动的片段。

    我可以得到args:

    val args = MyActivity.fromBundle(intent.extras)
    

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

    2 回复  |  直到 6 年前
        1
  •  2
  •   ianhanniballake    6 年前

    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 你的 导航软管碎片 R.navigation 你以前在你的 应用程序:航海图 标签。通过将参数传递到 setGraph 调用,您的起始目标将直接获取参数,而不调用 navigate 再次(默认情况下,这将在您的后堆栈上创建目标的新实例,而不是您想要的)。

        2
  •  0
  •   JavierSegoviaCordoba    6 年前

    我不知道是否建议这样做,但它起作用:

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