Сохранить состояние фрагмента при использовании bottomNavigationView и компонента Navigation - PullRequest
0 голосов
/ 17 апреля 2020

В моем приложении я использую bottomNavigationView, компонент Navigation и viewmodel. Когда я переключил вкладки и вернулся, весь фрагмент исчез. Он не восстановил свое прежнее состояние. Компонент навигации заменяет фрагмент по умолчанию.

Как решить проблему?

MainActivity.kt

 override fun onCreate(savedInstanceState: Bundle?) {
    ...
 navController = findNavController(R.id.nav_host_fragment)
        appBarConfiguration = AppBarConfiguration(
            setOf(
                R.id.navigation_home,
                R.id.navigation_order,
                R.id.navigation_cart
            )
        )
        binding.navView.setupWithNavController(navController)
}

навигация. xml

<?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/mobile_navigation"
    app:startDestination="@+id/navigation_home">

    <fragment
        android:id="@+id/navigation_home"
        android:name="ui.main.home.HomeFragment"
        tools:layout="@layout/fragment_home">
        <action
            android:id="@+id/action_navigation_home_to_navigation_category"
            app:destination="@id/navigation_category" />
    </fragment>

    <fragment
        android:id="@+id/navigation_order"
        android:name="ui.main.order.OrderFragment"
        tools:layout="@layout/fragment_order" />

    <fragment
        android:id="@+id/navigation_cart"
        android:name="ui.main.cart.CartFragment"
        tools:layout="@layout/fragment_cart" />

    <fragment
        android:id="@+id/navigation_category"
        android:name="ui.main.home.category.CategoryFragment"
        tools:layout="@layout/fragment_category">
        <argument
            android:name="id"
            android:defaultValue="0"
            app:argType="integer" />
        <argument
            android:name="categoryList"
            app:argType="net.model.Category[]" />
    </fragment>
</navigation>

1 Ответ

1 голос
/ 20 апреля 2020

https://github.com/android/architecture-components-samples/tree/master/NavigationAdvancedSample

Попробуйте это. Этот репозиторий решает вашу проблему. Сохраняет каждое состояние вкладки.

...