[使用bottomNavigationView和Navigation组件时保存片段状态

问题描述 投票:0回答:1

在我的应用程序中,我使用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)
}

navigation.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>
android kotlin android-architecture-components bottomnavigationview android-architecture-navigation
1个回答
0
投票

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

尝试一下。该存储库解决了您的问题。它保存每个选项卡的状态。

© www.soinside.com 2019 - 2024. All rights reserved.