我有一个活动FrameLayout
。该活动应显示四个步骤,每个步骤都是一个Fragment
. 当我想更进一步时,我不希望我的片段被重新创建。我想保留它们并在我的片段中简单地替换它们的视图。
我曾经首先创建我的 Fragments 并将它们添加到 backstack 中,如下所示:
Fragment step= new Frag1ActCompleteFragsCommTrack();
FragmentTransaction ft= getSupportFragmentManager().beginTransaction();
ft.add(step, ""+onStepNr);
ft.addToBackStack(null);
ft.commit();
请注意,我没有显示它,我只是创建它并添加到后台堆栈。
因此,一旦我需要显示其中的一个片段,我就添加它(在此示例中,我不会从其中删除任何片段,framelayout
因为这是我的第一个添加):
FragmentTransaction ft= getSupportFragmentManager().beginTransaction();
ft.add(R.id.my_frameLayout, step);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
所以:问题是我获得了一个
原因:java.lang.IllegalStateException:已添加片段:Frag1ActCompleteFragsCommTrack{410dcb20 #0 id=0x7f050041 -1}
但我认为我不能在第一次直接添加到我的框架布局中,否则下次我替换它时,我可能会丢失我的片段。我对吗?那么.. 保留可以在框架布局中相互交换的片段的最佳做法是什么?