繁体   English   中英

backStack 中的片段

[英]Fragments in backStack

我有具有 3 个选项卡的 ViewPager。 Tab(3) 包括 2 个片段 (A) --> (B)。

Tab(1)
Tab(2)
Tab(3) --> (B) --> (C)

我在 Tab(3) 中替换片段的方式:

FragmentTransaction trans = getActivity().getSupportFragmentManager().beginTransaction();
            trans.replace(R.id.B_container, new FragmentC().newInstance(), "C");
            trans.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
            trans.addToBackStack("B->C");
            trans.commit();

当我在 (B) 中并且我正在按下一个按钮时,它会将我直接带到 Tab(3),跳过 (A)。 这是(B)中按钮的代码:

FragmentManager fm = getActivity().getSupportFragmentManager();
            for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {
                fm.popBackStack();
            }

一切正常。 问题是当我在 (B) 时,然后我 go 到 Tab(1) 或 Tab(2) 并在它不起作用后点击按钮。 请让我知道我做错了什么。 谢谢你。

//================================================= =======================

我试图用 getChildFragmentMaganer() 替换 etActivity().getSupportFragmentManager()。 由于 popBackStack() 的常规方式不再起作用,我不得不对其进行修改。 现在它可以工作了,我也有同样的问题。

FragmentManager fm = getActivity().getSupportFragmentManager();
            for (Fragment frag : fm.getFragments()) {
                    FragmentManager childFm = frag.getChildFragmentManager();
                    if (childFm.getBackStackEntryCount() > 0) {
                        childFm.popBackStack();
                    }
                }
            }

尝试使用getChildFragmentManager()来获取您的片段管理器。 根据我的经验,当我在一个片段中并尝试在其中放置另一个片段时,我使用 getChildFragmentManager。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM