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

问题描述 投票:1回答:2

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

kotlin tabs bottomnavigationview
2个回答
0
投票

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

  1. 您需要创建片段堆栈列表:val mFragmentStacks: MutableList<Stack<Fragment>>
  2. 您需要根据选项卡位置保存片段实例:qazxsw poi
  3. 首先检查堆栈是否有任何条目然后附加最后一个片段,否则创建新片段。 if(!mFragmentStacks [index] .isEmpty()){ mFragmentStacks[currentStackIndex].push(fragment) } else { val fragment = mFragmentStacks[currentStackIndex].peek() }

0
投票

要避免重新创建片段,可以检查backstack上是否存在此实例。

您可以使用后退任务的标记来搜索特定的片段实例

© www.soinside.com 2019 - 2024. All rights reserved.