[英]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.