使用导航从 Activity 传递到片段

Pass to fragment using Navigation from Activity

我有一个 activity 有两个片段。任一片段都位于 activity 中的容器中。 activity 也有带设置按钮的工具栏。我应该通过单击设置按钮使用导航传递设置片段,但我遇到了问题,因为 findNavController(R.id.home_nav).navigate(R.id.action_second_fragment_to_settings_fragment) 如果我们传递到设置屏幕并且第二个片段处于活动状态,则可以工作,但是从第一个活动开始就会崩溃。 我需要做什么来解决这个问题?我只使用导航组件中的操作在片段之间传递。这个任务可能有有用的解决方案

如果您的 navController 在 MainActivity 中,使用此代码您可以访问 navController 并将数据发送到片段。

加载新片段:

    val bundle = Bundle()
    bundle.putString("id", id)

    (activity as MainActivity).navController.navigate(R.id.orderDetailFragment, bundle)

用于获取 onViewCreated 片段中的数据:

 arguments?.let {

        if (it.getSerializable("id") != null) { 
            val id = it.getString("id")
        }


    }

希望有用