Android Navigation 组件在图表之间导航

Posted

技术标签:

【中文标题】Android Navigation 组件在图表之间导航【英文标题】:Android Navigation Component navigate between graphs 【发布时间】:2020-01-15 08:56:07 【问题描述】:

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

在每个导航图中,我都有一个包含 3 个片段的流程。 redFragmentOne,redFragmentTwo,redFragmentThreeblueFragmentOne,blueFragmentTwo,blueFragmentThree

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

有没有办法做到这一点?

我是这样尝试的:

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

有什么建议吗?

【问题讨论】:

【参考方案1】:

解决方案:

以意图开始 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_
    android:layout_
    app:defaultNavHost="true"
    app:layout_constraintTop_toTopOf="parent" />

【讨论】:

以上是关于Android Navigation 组件在图表之间导航的主要内容,如果未能解决你的问题,请参考以下文章

踩坑!Android Jetpack组件间库之Navigation

Android Jetpack导航组件——Navigation的使用

在 Android Navigation 组件中使用 backstack 打开不同层次结构中的片段

Android日志—Navigation

Android jetpack之Navigation

react-navigation使用之嵌套和跳转