改变android中backstack片段的位置?

时间:2016-11-16 12:00:01

标签: android android-fragments

目前,我有一个像这样的Fragment堆栈。

  

F1 - > F2 - > F3 - > F4 - > F5

在一项活动中,我有一个按钮 B1

我的问题是当我从活动中按下B1按钮时,如何更新片段堆栈,如下所示。

  

F2 - > F3 - > F4 - > F5 - > F1。

我在addtobackstack时使用了字符串标记。

2 个答案:

答案 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,然后你必须再将它推到堆栈。我认为它可能适合你。