为什么没有人帮助我?
在我的应用程序中,我使用了Navigation component
和BottomNavigationView
来显示一些片段。
我写下面的代码,但是当改变片段从BottomNavigationView
重新创建片段!
我要保存片段状态,不要重新创建片段!
XML代码:
<!--Fragments-->
<androidx.fragment.app.FragmentContainerView
android:id="@+id/navHost"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/nav_main" />
<!--Bottom nav-->
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNav"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/menu_home" />
活动代码:
private lateinit var navHost: NavHostFragment
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
_binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
navHost = supportFragmentManager.findFragmentById(R.id.navHost) as NavHostFragment
binding.bottomNav.apply {
setupWithNavController(navHost.navController)
//Disable double click on item
setOnNavigationItemReselectedListener {}
}
override fun onNavigateUp(): Boolean {
return navHost.navController.navigateUp() || super.onNavigateUp()
}
}
如何在点击BottomNavigationView项目时保存片段 * 的状态**,而不重新创建?
1条答案
按热度按时间dgiusagp1#
有多种方法可以保存数据https://developer.android.com/guide/fragments/saving-state,也可以使用多个backstack https://medium.com/androiddevelopers/navigation-multiple-back-stacks-6c67ba41952f