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

时间:2019-09-13 13:15:38

标签: android kotlin navigation android-architecture-navigation

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

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

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

有没有办法做到这一点?

我这样尝试过:

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

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

解决方案:

故意启动“活动”,并将目的地作为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

重要!

navGraph="nav_graph_blue"的布局xml中删除ActivityBlue

<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" />