Android Navigation 组件在图表之间导航
Posted
技术标签:
【中文标题】Android Navigation 组件在图表之间导航【英文标题】:Android Navigation Component navigate between graphs 【发布时间】:2020-01-15 08:56:07 【问题描述】:我有两个导航图 nav_graph_red
和 nav_graph_blue
以及两个活动 ActivityRed
和 ActivityBlue
。
在每个导航图中,我都有一个包含 3 个片段的流程。 redFragmentOne
,redFragmentTwo
,redFragmentThree
和 blueFragmentOne
,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的使用