从后台删除特定的片段

时间:2019-06-12 09:02:57

标签: java android android-fragments

在我的应用程序中,我有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),但这些都不起作用。

3 个答案:

答案 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();