Android 导航组件在图表之间导航

Android Navigation Component navigate between graphs

我有两个导航图 nav_graph_rednav_graph_blue 以及两个活动 ActivityRedActivityBlue

在每个导航图中,我都有一个包含 3 个片段的流程。 redFragmentOneredFragmentTworedFragmentThreeblueFragmentOneblueFragmentTwoblueFragmentThree

现在我想从 ActivityRed - redFragmentOne 导航到目的地 blueFragmentTwo

有办法做到这一点吗?

我这样试过:

Navigation.findNavController(ActivityBlue.newInstance(),R.id.host_navigation).navigate(R.id.blueFragmentTwo)

有什么建议吗?

解法:

带着意图开始 Activity 并将您的目的地作为 Intent extra

 val blueIntent = Intent(requireActivity(), ActivityBlue::class.java)
 blueIntent.putExtra("navigationStartDestination", R.id.blueFragmentTwo)
 startActivity(blueIntent)

ActivityBlue onCreate -> 获取intent extra并定义导航图

    val startDestination = intent.getIntExtra("navigationStartDestination", 0)

    val navHostFragment = nav_host_fragment_blue as NavHostFragment
    val inflater = navHostFragment.navController.navInflater
    val graph = inflater.inflate(R.navigation.nav_graph_blue)

    graph.startDestination = startDestination
    navHostFragment.navController.graph = graph

重要!:

删除 ActivityBlue

的布局 xml 中的 navGraph="nav_graph_blue"
<fragment
    android:id="@+id/nav_host_fragment_blue"
    android:name="androidx.navigation.fragment.NavHostFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:defaultNavHost="true"
    app:layout_constraintTop_toTopOf="parent" />