Это простой пример настройки навигации, которую я не могу заставить работать с библиотекой компонентов навигации после некоторого времени исследования.
Допустим, у меня есть следующий экран:
Прилепленный фрагмент вверху и фрагмент внизу находятся в своих собственных навигационных графиках, вот main_activity.xml:
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/nav_sticky_top"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="50dp"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/navigation_graph_sticky_top" />
<fragment
android:id="@+id/navigation_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="0dp"
app:defaultNavHost="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/nav_sticky_top"
app:navGraph="@navigation/navigation_graph" />
</androidx.constraintlayout.widget.ConstraintLayout>
Когда я нажимаю «перейти к одноуровневому фрагменту», он переходит к одноуровневому фрагменту внутри нижнего навигационного графика, что является правильным, результат:
Это navigation_graph.xml:
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/navigation_graph.xml"
app:startDestination="@id/blankFragment1">
<fragment
android:id="@+id/blankFragment1"
android:name="com.example.myapplication.BlankFragment1"
android:label="fragment_blank_fragment1"
tools:layout="@layout/fragment_blank_fragment1">
<action
android:id="@+id/action_blankFragment1_to_siblingFragment"
app:destination="@id/siblingFragment" />
</fragment>
<fragment
android:id="@+id/siblingFragment"
android:name="com.example.myapplication.SiblingFragment"
tools:layout="@layout/fragment_sibling_fragment" />
</navigation>
Теперь я хотел бы реализовать кнопку «Перейти к полноэкранному фрагменту», которая должна переходить к полноэкранному фрагменту, который находится в отдельном, третьем навигационном графике и должен быть над графом навигации по закрепленным фрагментам и графом навигации под ним. Как этого добиться? Под этим я подразумеваю без хаков, таких как установка для видимости верхнего фрагмента навигационного графика значения GONE и переход по нижнему навигационному графику к полноэкранному фрагменту.