gpt4 book ai didi

android - 防止popBackStack中多次添加同一个Fragment

转载 作者:太空狗 更新时间:2023-10-29 16:36:21 27 4
gpt4 key购买 nike

我的 Activity 由 3 个嵌套 fragment 组成。有我的默认显示的MainFragment,可以从中调用ProductFragment,然后可以从ProductFragment<调用DetailFragment/.

我可以在我的 ProductFragmentDetailFragment 之间来回切换。通过这样做,popStackBack 方法正在积累相似的 fragment 。然后,如果我点击后退按钮,它会返回我调用它们的所有 fragment 。

避免在后台堆栈中保留相同 fragment 的正确方法是什么?

编辑:

我首先调用我的主要 fragment :

    if (savedInstanceState == null) {
getFragmentManager()
.beginTransaction()
.add(R.id.container, new SearchFragment(), "SEARCH_TAG")
.commit();
}

这是从 Activity 中调用 fragment 的代码:

    FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(R.animator.enter_from_bottom, R.animator.exit_to_top, R.animator.enter_from_bottom, R.animator.exit_to_top);
ft.replace(R.id.container, new FactFragment(), "FACT_TAG");
ft.addToBackStack("FACT_TAG");
ft.commit();

然后,点击返回:

@Override
public void onBackPressed() {
getFragmentManager().popBackStack();
}

我试图获取当前 fragment 的标签并执行一些与其相关的特定代码,但效果不佳。我还尝试 addToBackStack() 仅当当前 Fragment 尚未添加到 backStack 但它弄乱了我的 fragment View 时。

最佳答案

使用 fragment 的方法 isAdded() 评估插入。例如:

if(!frag.isAdded()){
//do fragment transaction and add frag
}

关于android - 防止popBackStack中多次添加同一个Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27957789/

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