我有一个片段,我有一个嵌套片段。我附上了一张图片来说明。所以我有一个嵌套的孩子,当我点击按钮1时,我用子B替换孩子A,然后在按钮2上单击我用子C替换孩子B.现在当我点击按钮3时,我替换父母(片段1与片段2),这就是我想要做的。
当我在片段2上点击后退按钮时,我弹出后台并显示片段1,问题是孩子A显示,当我从片段2到片段时,我需要弄清楚如何显示子c 1。 我还需要提一下,子c包含在网格视图中显示的测试结果。有人可以帮我这么做吗?
修改
以下是我用于子片段交易的代码(按钮1和按钮2点击)
protected void nextNestedFragment(Fragment nestedFragment){
FragmentTransaction ft = getParentFragment().getChildFragmentManager().beginTransaction();
ft.setCustomAnimations(R.animator.enter_slide_in,R.animator.enter_slide_out,R.animator.close_slide_in, R.animator.close_slide_out);
ft.replace(R.id.nested_fragment_container, nestedFragment).addToBackStack(null).commit();
}
所以对于上面的内容,我传入下一个片段,我希望导航到父片段中。下面是我在按钮3上使用的代码,用于从片段1导航到片段2:
protected void nextFragment(Fragment nextFrag){
FragmentTransaction ft = getParentFragment().getFragmentManager().beginTransaction();
ft.setCustomAnimations(R.animator.enter_slide_in,R.animator.enter_slide_out,R.animator.close_slide_in, R.animator.close_slide_out);
ft.replace(R.id.fragment_container, nextFrag).addToBackStack(null).commit();
}
答案 0 :(得分:1)
首先,你需要知道,你有两个不同的FragmentManager(默认的一个,和ChildFragmentManager),每个都有它自己的后栈。当您按下后退按钮时,弹出第一个FragmentManager的后堆栈,显示片段1。
其次,当从后面的堆栈onCreateView
弹出片段1时,调用该片段。而且我很确定你在里面创建了一个有孩子A的视图。
您需要做的是保存Fragment的状态。这里有很多关于如何正确执行此操作的问题。从here开始。