选择BottomNavigationView的选项卡时如何阻止片段重新创建?

时间:2018-09-09 20:03:52

标签: kotlin tabs bottomnavigationview

我正在尝试在示例项目中使用新的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()或任何其他监听器。导航结构本身会重新生成片段。

2 个答案:

答案 0 :(得分:0)

您可以通过保存最后创建的片段实例来防止每次创建新片段。

  1. 您需要创建片段堆栈列表:val mFragmentStacks: MutableList<Stack<Fragment>>

  2. 您需要根据标签位置保存mFragmentStacks[currentStackIndex].push(fragment)

  3. 首先检查堆栈中是否有任何条目,然后附加最后一个片段,否则创建新片段。

    if(!mFragmentStacks [index] .isEmpty()){

    val fragment = mFragmentStacks[currentStackIndex].peek()
    

    }其他{

    val fragment = DemoFragment()
    mFragmentStacks[currentStackIndex].push(fragment)
    

    }

答案 1 :(得分:0)

为避免重新创建片段,您可以检查在堆栈上是否有该实例的实例。

您可以使用backtask标记搜索特定的片段实例