在我的应用程序中,我有4个按钮,这些按钮将创建并替换片段,然后将其添加到后台。 例如:
[A] -> [B] -> [C] -> [D]
第一个片段A
存在,当我单击按钮B
时,片段A
将被片段B
替换,并将片段B
添加到后堆栈,当我单击按钮C
时,片段B
将被片段C
替换,并将片段C
添加到后堆栈,依此类推。
我的问题是,再次单击按钮A
时,它将从先前的后堆栈中删除片段A
并将其添加到最后一个堆栈中,因此图像如下所示:
[B] -> [C] -> [D] -> [A]
或者,如果我单击按钮B
,图像将如下所示:
[A] -> [C] -> [D] -> [B]
我该怎么做?我尝试使用FragmentManager.popBackStack(indexStack, 0)
,FragmentManager.popBackStack(Tag, 0)
,但这些都不起作用。
答案 0 :(得分:2)
使用FragmentManager
FragmentManager manager = getActivity().getSupportFragmentManager();
FragmentTransaction trans = manager.beginTransaction();
trans.remove(YourSpecificFragmentHere);
trans.commit();
manager.popBackStack();
答案 1 :(得分:1)
尝试POP_BACK_STACK_INCLUSIVE
FragmentManager.popBackStack(Tag, FragmentManager.POP_BACK_STACK_INCLUSIVE);
应该会醒来
答案 2 :(得分:0)
尝试从堆栈中删除您的片段,然后将其再次添加到其他事务中:
FragmentA fragmentA = getFragmentManager().findFragmentByTag("TAG_OF_FRAGMENT_A");
getFragmentManager().beginTransaction().remove(fragmentA).commit();
getFragmentManager().beginTransaction().replace(R.id.containerResId, fragmentA ).commit();