Android 导航组件-BottomNavigationView-Don';返回时不要保留startDestination碎片

Android 导航组件-BottomNavigationView-Don';返回时不要保留startDestination碎片,android,material-design,bottomnavigationview,android-architecture-navigation,Android,Material Design,Bottomnavigationview,Android Architecture Navigation,我正在安装带有导航组件和BottomNavigationView的UI 3个选项卡:主页、新闻、帐户 当我从主页导航到新闻(目前,后堆栈有HomeFragment)并按下后退按钮时,片段新闻将被销毁,后堆栈中的HomeFragment也将被销毁,并创建新的HomeFragment。我希望HomeFragment在后堆栈中再次显示,而不是销毁和创建新的 我使用以下代码: bottomNavigation.setupWithNavController(navHostFragment.findNavC

我正在安装带有导航组件和BottomNavigationView的UI

3个选项卡:主页、新闻、帐户

当我从主页导航到新闻(目前,后堆栈有HomeFragment)并按下后退按钮时,片段新闻将被销毁,后堆栈中的HomeFragment也将被销毁,并创建新的HomeFragment。我希望HomeFragment在后堆栈中再次显示,而不是销毁和创建新的

我使用以下代码:

bottomNavigation.setupWithNavController(navHostFragment.findNavController())
如何解决这个问题

谢谢


更新问题:


当我单击菜单项时,片段将被创建新实例。我不想这样,如果还没有单击新片段,我想导航到新片段,如果我再次单击菜单项,该片段将再次显示(不创建新的)。

关于您更新的问题。如果不希望在重新选择时重新创建片段,只需在BottomNavigationView上设置OnNavigationItemReselectedListener

    bottomNavigation.setOnNavigationItemReselectedListener { item ->
        when (item.itemId) {
            R.id.frag1-> {
                // do something on reselection or leave empty
            }
            R.id.frag2-> {
                // do something on reselection or leave empty
            }
        }
    }

我还没有找到解决办法,请帮助我。这能回答你的问题吗?解决方案是使用
FragmentManager
,将所有
片段添加到
onCreate()
中,并根据需要显示/隐藏
片段。请检查我提到的上述答案。感谢您的支持,但我想将导航组件与BottomNaviagtionView一起使用。这就是我共享该答案的原因。它不使用
ViewPager