backStack 中的片段
Fragments in backStack
我的 ViewPager 有 3 个选项卡。 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) 时,然后我转到 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。
我的 ViewPager 有 3 个选项卡。 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) 时,然后我转到 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。