Android Fragments 如何在Android的BottomNavView和Navigation中保存片段状态

qxgroojn  于 12个月前  发布在  Android
关注(0)|答案(1)|浏览(98)

为什么没有人帮助我?

在我的应用程序中,我使用了Navigation componentBottomNavigationView来显示一些片段。
我写下面的代码,但是当改变片段从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项目时保存片段 * 的状态**,而不重新创建?

相关问题