android在弹出backstack之前显示下一个片段

时间:2015-02-14 11:34:34

标签: android android-fragments back-stack fragment-backstack

我有几个不断互相替换的片段(添加到backstack的事务)。根据用户在某些时候的操作,我需要清除所有(或部分)之前的片段并仅显示1个新片段。

要执行此操作,我目前先执行popBackStack()清除它们,然后执行replace(),这会按预期工作。然而,在我们看到新片段之前,有时会有前一片段的闪光。我想这是因为我在展示新片段之前首先弹出了后台。

所以我想知道是否有一种简单的方法可以首先显示新片段,然后清除以前交易的后台堆栈?

1 个答案:

答案 0 :(得分:0)

编辑:你是对的,这是因为你在添加片段之前从后台堆栈中删除。

如果你不需要后面堆栈上的新片段,你可以先在一个事务中添加新片段,然后在事务后从后面的堆栈中弹出其余的片段。 (或者如果你确实需要它,除了新添加的碎片之外,从后堆栈中删除所有碎片)

此外,如果您只是调用replace(R.id.containter,new Fragment(),TAG),添加到容器中的所有片段都将替换为新片段。 (然后你也可以手动清除后栈)

这两个解决方案都应该删除你有时会看到的闪存,因为在你的情况下你开始删除碎片然后添加一个新的,因此你可以看到旧的删除自己。

如果问题仍然存在,你可以尝试在将新片段附加到活动并显示自己之后清除后面的堆栈(但我不认为这是必要的,我尝试了上面的解决方案,我调用添加片段首先,然后立即弹出整个后台)