首页 > 解决方案 > 如何使用子片段管理 Backstack?

问题描述

我遇到了嵌套/子片段的问题。我的用例是:我将 Frag A 作为父片段FragChild1,将FragChild2,FragChild3作为子片段显示在Frag A. 现在在 FragChild3 的背压上,它应该像这样工作:

FragChild3 -> FragChild2 -> FragChild1 -> FragA(ParentFrag)。

我用来添加子片段的代码是 -

for ChildFrag1-

Fragment mChildFragment1 = new ChildFragment1();
        FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
        transaction.replace(R.id.container_view, mChildFragment1);
        transaction.addToBackStack("FragChild1");
        transaction.commit();
        
for ChildFrag2-

Fragment mChildFragment2 = new ChildFragment2();
        FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
        transaction.replace(R.id.container_view, mChildFragment2);
        transaction.addToBackStack("FragChild2");
        transaction.commit();

我已经通过 StackOverflow 搜索了相关答案,但还没有找到任何正确的答案/管理子片段的 backstack 的方法。

标签: androidandroid-fragmentsandroid-nested-fragmentchild-fragment

解决方案


你的代码看起来不错。只需覆盖onbackpressed包含父片段的活动中的方法并将给定的代码放入其中。

if (parentfragment.getChildFragmentManager().getBackStackEntryCount() > 1) {
    parentfragment.getChildFragmentManager().popBackStackImmediate();
} else {
    super.onBackPressed();
}

推荐阅读