我正在尝试在示例项目中使用新的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()
或任何其他监听器。导航结构本身会重新生成片段。
答案 0 :(得分:0)
您可以通过保存最后创建的片段实例来防止每次创建新片段。
您需要创建片段堆栈列表:val mFragmentStacks: MutableList<Stack<Fragment>>
您需要根据标签位置保存mFragmentStacks[currentStackIndex].push(fragment)
首先检查堆栈中是否有任何条目,然后附加最后一个片段,否则创建新片段。
if(!mFragmentStacks [index] .isEmpty()){
val fragment = mFragmentStacks[currentStackIndex].peek()
}其他{
val fragment = DemoFragment()
mFragmentStacks[currentStackIndex].push(fragment)
}
答案 1 :(得分:0)
为避免重新创建片段,您可以检查在堆栈上是否有该实例的实例。
您可以使用backtask标记搜索特定的片段实例