Android 导航组件-BottomNavigationView-Don';返回时不要保留startDestination碎片
我正在安装带有导航组件和BottomNavigationView的UI 3个选项卡:主页、新闻、帐户 当我从主页导航到新闻(目前,后堆栈有HomeFragment)并按下后退按钮时,片段新闻将被销毁,后堆栈中的HomeFragment也将被销毁,并创建新的HomeFragment。我希望HomeFragment在后堆栈中再次显示,而不是销毁和创建新的 我使用以下代码: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
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
。