В настоящее время я пытаюсь реализовать приложение, в котором при запуске находится 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 не включает графики