gpt4 book ai didi

android - 无法显示已添加的 fragment

转载 作者:行者123 更新时间:2023-11-29 16:40:54 40 4
gpt4 key购买 nike

我正在尝试执行以下操作:

  1. 启动应用 - fragment A 加载
  2. 点击 A 上的按钮 - fragment B 加载
  3. 点击 B 上的按钮 - fragment A 加载

这是MainActivity中的一个方法:

private fun addBrowseBooksFragment() {

var browseBooksFragment = BrowseBooksFragment()
val fragmentManager = fragmentManager
val fragmentTransaction = fragmentManager.beginTransaction()

if ((fragmentManager.findFragmentByTag("BrowseBooksFragment")) != null){
browseBooksFragment = fragmentManager.findFragmentByTag("BrowseBooksFragment") as BrowseBooksFragment

println("working fine up to here")

if (browseBooksFragment.isAdded) {
println("Showing Added Fragment")
browseBooksFragment.setCallBackInterface(this)
fragmentTransaction.show(browseBooksFragment)
}

} else {
browseBooksFragment.setCallBackInterface(this)
fragmentTransaction.replace(R.id.fragmentContainer, browseBooksFragment, "BrowseBooksFragment")
}
fragmentTransaction.commit()
}

else 工作正常,因为 Fragment A 加载没有问题。 fragment B 也可以毫无问题地加载。但是当我单击按钮返回 fragment A 时,browseBooksFragment.isAdded 返回 false 但 browseBooksFragment 不为空。它按标签返回 fragment 。

我试图通过不使用 replace 而是使用 show 来避免重新创建整个 fragment 。

我应该补充一点,如果我注释掉 isAdded 条件并将 show 更改为 replace,我会得到一个 Fragment already added 异常。

//            if (browseBooksFragment.isAdded) {
println("Showing Added Fragment")
browseBooksFragment.setCallBackInterface(this)
fragmentTransaction.replace(R.id.fragmentContainer, browseBooksFragment, "BrowseBooksFragment")
// fragmentTransaction.show(browseBooksFragment)
// }

如何正确显示已添加的 Fragment A?

最佳答案

您应该使用 add() 而不是 replace()。这样您就不会替换现有 fragment ,而是将 fragment B 推到 fragment A 之上。

例如

FragmentManager fm = getSupportFragmentManager();
fm.beginTransaction()
.add("id of your fragment container", fragment, fragment.class.getSimpleName())
.addToBackStack(fragment.class.getSimpleName())
.commit();

通过这种方式,如果你想加载之前的 fragment ,你只需要这样做

fm.popBackStack();

这将从 BackStack 中弹出 fragment B,显示之前创建的 fragment A。

关于android - 无法显示已添加的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50755770/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com