在我的应用程序中,我使用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>
https://github.com/android/architecture-components-samples/tree/master/NavigationAdvancedSample
尝试一下。该存储库解决了您的问题。它保存每个选项卡的状态。