简单的问题,但似乎无法回答...

如何清除fragmentManager向后堆栈而不弹出片段?

我这样理解:

后退堆栈条目=使用addToBackStack命令预先保存的事务列表。

例如:"用片段2替换片段1"。

popBackStack =做最后保存的事务反转。

例如:"用片段1替换片段2"。

假设我做了第一个事务:F1-> F2并将此事务添加到堆栈中。现在,当我按返回按钮时,将发生F2-> F1。

好的但是..

我已经改变主意了,我想清理后排。

我希望用户使用F2片段,但是当他/她按下"后退"按钮时,活动应该关闭,就像后退栈为空。

我需要类似的东西:

for(int i=0;i

getFragmentManager().getBackStackEntryAt(i).remove();

}

已编辑

我试图对复杂的情况提出简单的问题,但得到的答案很简单;)

Abhishek Patel的回答很好,但这不是我想要的。仍然是一个很好的答案。

只是澄清一下:

android中的后退堆栈不是完全可编辑的列表,例如:

交易1

交易2

交易3

交易4

我们无法执行"删除交易3"来进行以下操作:

交易1

交易2

交易4

我们无法清除所有后退堆栈,并使最后一个可见片段保持活动状态。

我们可以将堆栈记录删除到特定位置,例如:

"将所有内容删除到事务2"即可获得:

交易1

交易2

在屏幕上,您会看到交易2的效果。

为什么需要这个?

我以为我可以制作一个将成为"主片段"的片段。该主片段将使用一个接口来告诉它现在显示的是老板片段的任何活动,以及之前发生的一切-不再重要。

(F)-片段,(A)-活动

(F)-老兄。我是老板,而且我很明显并且很爱你。请帮我清理您的后备箱,但保留我的交易,这使我到了这里。

(A)-对不起,您应该在交易之前告诉我清除我的后备箱,以便我可以在新的新后备箱上添加您的交易。

stackoverflow.com/questions/6186433/

试试这可能会有所帮助

public void clearBackstack() {

BackStackEntry entry = getSupportFragmentManager().getBackStackEntryAt(

0);

getSupportFragmentManager().popBackStack(entry.getId(),

FragmentManager.POP_BACK_STACK_INCLUSIVE);

getSupportFragmentManager().executePendingTransactions();

}

我已经找到它了,但它并不是我一直在寻找的东西。 我以为backstack就像一个列表,我可以删除我想要的任何行...

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐