我正在尝试在我的示例项目中使用新的Navigation结构。
我在activity.xml中使用了BottomNavigationView
,并使用NavigationController
启动。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_launcher)
val navController = Navigation.findNavController(this, R.id.navHostFragment)
NavigationUI.setupWithNavController(bottomNavigation, navController)
}
到目前为止,这很棒,但每次单击选项卡时,每次都会重新创建相关片段。
我该如何防止这种行为?
我不想每次都创建新的片段。
我只是想使用第一个创建的片段。
注意:我没有使用
setOnNavigationItemSelectedListener()
或任何其他听众。导航结构本身会重新生成片段。
您可以通过保存最后创建的片段实例来防止每次都创建新片段。
val mFragmentStacks: MutableList<Stack<Fragment>>
mFragmentStacks[currentStackIndex].push(fragment)
} else {
val fragment = mFragmentStacks[currentStackIndex].peek()
}要避免重新创建片段,可以检查backstack上是否存在此实例。
您可以使用后退任务的标记来搜索特定的片段实例