如何使用多个 NavHost 片段创建深层链接
Posted
技术标签:
【中文标题】如何使用多个 NavHost 片段创建深层链接【英文标题】:HowTo create deep links with multiple NavHostFragments 【发布时间】:2020-05-26 14:23:51 【问题描述】:我发现的示例要么显示将用于深度链接的单个(嵌套)导航图,要么显示具有多个 NavHostFragment 但不提供深度链接的嵌套导航。
我有以下场景:
MainActivity
拥有处理主导航到 HomeFragment、PostsFragment、ProfileFragment 的 main-NavHostFragment。主页、帖子s和个人资料应显示在底部导航中。
PostFragment
帖子的详细信息片段。当我们点击 PostsFragment 中的列表项时,它将被打开。此布局有一个 NavHostFragment 处理有关帖子的子导航(PostDetailsFragment、PostCommentsFragment)
如何使用多个 NavHostFragment 提供指向 myapp://post/postId/cmets 的深层链接?
最好的,
克里斯
【问题讨论】:
【参考方案1】:我认为您不需要多个导航主机片段。请开始研究这个项目https://github.com/android/architecture-components-samples/tree/master/NavigationAdvancedSample,特别是这些扩展:https://github.com/android/architecture-components-samples/blob/master/NavigationAdvancedSample/app/src/main/java/com/example/android/navigationadvancedsample/NavigationExtensions.kt。
您的活动布局应该与此类似:
<!-- Fragments Container -->
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_container"
android:layout_
android:layout_
app:layout_constraintBottom_toTopOf="@+id/bottomNavigationView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/appBarLayout" />
<!-- Bottom Navigation View -->
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavigationView"
android:layout_
android:layout_
android:layout_marginStart="0dp"
android:layout_marginEnd="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/bottom_navigation_menu" />
您可以将深层链接保留在清单中提到的导航图的嵌套图中。在你的嵌套图中,别忘了用<deepLink.../>
标记你的着陆片段
【讨论】:
谢谢。但我实际上想要两个 navHost。因为我希望能够独立于外部片段导航内部片段。 基于导航图的链接背后的想法是重建 backstack。就您而言,我不明白用户将如何/在哪里“支持”。我想知道这甚至是可能的 - 不要这么认为。 我认为外部的 navHost 可能是默认的并接收回压事件。我还认为我可以在外部片段中侦听后面的事件。这样做时,我会检查内部导航控制器是否需要 popBack 内部控制器或 popBack 外部控制器。所以我的想法...... :)以上是关于如何使用多个 NavHost 片段创建深层链接的主要内容,如果未能解决你的问题,请参考以下文章