替换不与addBackStack一起使用的片段

时间:2013-07-15 11:13:43

标签: android android-fragments

这是一个关于理解Fragments中函数replace()的行为的问题,我认为这不直观。

1)我在XML中有一个空的FrameLayout,其id = R.id.content_fragment。

2)通过代码,我像往常一样将一个片段添加到FrameLayout(我想保留backstack,以便用户可以返回旧的添加片段)

FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.add(R.id.content_fragment, new MyFragment1(), "tag1");
ft.addToBackStack(null);
ft.commit();

3)现在我想用一个全新的片段替换我的FrameLayout的内容(注意我想要替换,所以我希望旧片段从后台消失)

FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_fragment, new MyFragment2(), "tag2");
ft.addToBackStack(null);
ft.commit();

4)现在回去时,显示旧的MyFragment1 !!怎么会这样? “replace”+“addToBackStack”是否只是一个简单的“添加”?为什么呢?

由于

编辑:

示例:

  • 添加frag1

  • 添加frag2

  • 添加frag3 - >我有一个3片段的背书

  • 替换frag4 - >我应该有一个1个片段的后台,因为我正在替换整个                Frame4的内容与frag4

  • 添加frag5 - >我希望在靠背堆上有两个碎片(frag4& frag5)

  • 替换frag6 - >我希望再次回到1(frag6)

0 个答案:

没有答案