Как реализовать контроллер навигации в дочернем фрагменте? - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть фрагмент контроллера навигации, определенный внутри моего activity_main, который имеет высоту соответствия и ширину родительского элемента. Поэтому, когда я перемещаюсь между фрагментами, он заменяет весь экран. Теперь скажите, что я перехожу к фрагменту, который загружает карточку материала. Я хочу, чтобы эта карта материала имела свой собственный навигационный контроллер, который принимает высоту и ширину карты материала. Поэтому, когда я использую его контроллер навигации, он будет заменять только фрагменты в представлении карты материала, а не изменять вид родительского элемента.

Есть ли способ иметь два фрагмента хоста навигации? Таким образом, я могу определить один внутри Activity_main, а затем еще один, который я могу определить внутри дочернего фрагмента.

Activity_main:

<androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <fragment
            android:id="@+id/nav_host_fragment"
            android:name="androidx.navigation.fragment.NavHostFragment"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            app:defaultNavHost="true"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toTopOf="@id/barrier"
            app:navGraph="@navigation/base_nav_graph" />

childfragment:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_layout"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="600dp"
    android:layout_height="match_parent"
    android:layout_gravity="end"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintEnd_toEndOf="parent">

    <fragment
        android:id="@+id/nav_child_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:defaultNavHost="true"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:navGraph="@navigation/child_nav_graph" />

1 Ответ

1 голос
/ 14 февраля 2020

См. Расширенный пример https://github.com/android/architecture-components-samples/tree/master/NavigationAdvancedSample

Для элементов BottomNavigationView использовалось несколько навигационных контроллеров

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...