导航组件-BottomNavigationView-返回时不要保留startDestination片段

问题描述

我正在使用导航组件和BottomNavigationView设置UI。

3个标签:“首页”,“新闻”,“帐户”。

当我从首页导航到新闻(当前,“后退”堆栈具有HomeFragment)并按“返回”按钮时,片段新闻将被销毁,“后退”堆栈中的HomeFragment也将被销毁并创建新的HomeFragment。我希望BackFragment中的HomeFragment再次显示而不破坏并创建新的。

我使用以下代码

bottomNavigation.setupWithNavController(navHostFragment.findNavController())

如何解决此问题?

谢谢。


更新问题:

当我单击菜单项时,Fragment将创建新实例。我不想要那样,我想导航到尚未被单击的新片段,如果再次单击菜单项,片段将再次显示(不创建新片段)。

解决方法

关于您更新的问题。如果您不想在重新选择时重新创建片段,只需在 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
            }
        }
    }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...