目前,我有一个像这样的Fragment堆栈。
F1 - > F2 - > F3 - > F4 - > F5
在一项活动中,我有一个按钮 B1 。
我的问题是当我从活动中按下B1按钮时,如何更新片段堆栈,如下所示。
F2 - > F3 - > F4 - > F5 - > F1。
我在addtobackstack时使用了字符串标记。
答案 0 :(得分:2)
我通过这段代码解决了这个问题:
public void fragmentInflater(Fragment newFragment) {
FragmentTransaction transaction;
FragmentManager fragmentManager = getSupportFragmentManager();
transaction = fragmentManager.beginTransaction();
Fragment oldFragment = fragmentManager.findFragmentByTag(newFragment.getClass().getName());
if (oldFragment == null) {
transaction.replace(R.id.container, newFragment, newFragment.getClass().getName());
transaction.addToBackStack(null);
} else {
transaction.replace(R.id.container, oldFragment, newFragment.getClass().getName());
}
transaction.commit();
}
使用此方法将碎片添加到容器中,您将获得所需的效果。它还可以防止将重复的片段添加到容器中。
答案 1 :(得分:2)
您可以在代码中使用Stack来解决此问题。在片段事务中,您必须使用add而不是替换片段。在按钮B1上按下你必须从堆栈弹出片段F1,然后你必须再将它推到堆栈。我认为它可能适合你。