Android Компоненты навигации с BottomNavigationView и SplashScreenFragment в качестве startDestination - PullRequest
0 голосов
/ 11 февраля 2020

В настоящее время я пытаюсь реализовать приложение, в котором при запуске находится SplashScreenFragment и через несколько секунд я переключаюсь на экран с помощью BottomNavigationView

<?xml version="1.0" encoding="utf-8"?>
<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/app_navigation"
    app:startDestination="@id/navigation_splash_screen">

    <fragment
        android:id="@+id/navigation_splash_screen"
        android:name="com.example.test.SplashScreenFragment"
        tools:layout="@layout/fragment_splash_screen">

        <action
            android:id="@+id/action_navigation_splash_to_feature1"
            app:destination="@id/feature1_navigation"
            app:popUpTo="@+id/navigation_splash_screen"
            app:popUpToInclusive="true" />
    </fragment>

    <fragment
        android:id="@+id/navigation_test_1"
        android:name="com.example.test.Fragment1" />

    <fragment
        android:id="@+id/navigation_test_2"
        android:name="com.example.test.Fragment2" />

<fragment
        android:id="@+id/navigation_test_3"
        android:name="com.example.test.Fragment3" />
</navigation>

Затем я определяю bottom_nav_menu.xml следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@id/navigation_test_1"
        android:icon="@drawable/ic_dashboard_black_24dp"
        android:title="@string/bottom_nav_title_feature1" />

    <item
        android:id="@id/navigation_test_2"
        android:icon="@drawable/ic_notifications_black_24dp"
        android:title="@string/bottom_nav_title_feature2" />

<item
        android:id="@id/navigation_test_3"
        android:icon="@drawable/ic_notifications_black_24dp"
        android:title="@string/bottom_nav_title_feature3" />
</menu>

Версия компонентов навигации:

androidx.navigation:navigation-fragment-ktx:2.2.0
androidx.navigation:navigation-ui-ktx:2.2.0

Теперь после вызова bottomNavigationView.setupWithNavController(findNavController(R.id.nav_host_fragment)) внутри Activity, где nav_host_fragment определено внутри макета активности, все работает.

Проблема в том, что, когда пользователь нажимает кнопку «Назад» или перемещается назад и вперед между двумя пунктами меню, не очищает backstack, это означает, что после нажатия на Feature1 -> Feature2 -> Feature1 -> Feature2, когда пользователь нажимает назад навигация по кнопкам выглядит следующим образом: функция1 -> функция2 -> функция1 -> вне приложения (причина popUpToInclusive на SplashScreenFragment), а желаемая навигация назад: функция1 -> вне приложения.

Кто-нибудь успешно пытался использовать BottomNavigationView там, где первый элемент нижней навигации не запускается. Определение навигационного графика?

Отредактировано, поскольку кажется, что проблема заключается в том, что startDestination не включает графики

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