Как создать глубокие ссылки с несколькими фрагментами NavHostFragments - PullRequest
1 голос
/ 11 февраля 2020

Примеры, которые я нашел, либо показывают один (вложенный) граф навигации, который будет использоваться для глубокой связи, либо они показывают вложенную навигацию с несколькими фрагментами NavHostFragments, но не обеспечивают глубокую связь.


У меня есть следующий сценарий:

MainActivity

Имеет main-NavHostFragment, который обрабатывает основную навигацию к HomeFragment, PostsFragment, ProfileFragment. home, post s и профиль должны отображаться в нижней части навигации.

PostFragment

Фрагмент фрагмента сообщения. Он будет открыт, когда мы нажмем на элемент списка в PostsFragment. Этот макет имеет NavHostFragment, который обрабатывает суб-навигацию относительно поста (PostDetailsFragment, PostCommentsFragment)


Как я могу предоставить глубокие ссылки на myapp: // post / {postId} / comments с несколькими фрагментами NavHostFragments?

Best,

Chris

1 Ответ

0 голосов
/ 19 февраля 2020

Не думаю, что вам нужно несколько фрагментов навигационного хоста. Пожалуйста, начните изучать этот проект 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_width="0dp"
        android:layout_height="0dp"
        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_width="0dp"
        android:layout_height="wrap_content"
        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.../>

...