Android片段在堆栈中移动

时间:2015-04-27 11:46:51

标签: android android-fragments

想象一下:一个包含5个片段的活动。

Fragment1 - > Fragment2 (fragment1打开fragment2,onBackPressed反转操作)

Fragment3 - >的 Fragment4

这可以按预期工作,但现在我想这样做:

Fragment5 - >片段 4 有效,但是当我按下onBackPressed()时,我想被带到Fragment3而不是Fragment5。当我到达Fragment3并按回去退出应用程序时。

我试图做很多事情来操纵后台堆。但这些都没有解决我的问题。我通过transaction.replace(container,myFragment)交换片段。

我已经检查了所提供的文档,但我似乎无法找到适当的方法来操纵backstack(或任何标志)

1 个答案:

答案 0 :(得分:1)

您在同一Fragments内切换Activity

commit 之前,所有FragmentTransaction都是 addToBackStack 。这意味着您可以使用以下方法获取用户在Fragments之间更改的次数:

int count = getFragmentManager().getBackStackEntryCount();

在某种程度上,您可以识别每个Fragment并做任何您想做的事。

如果您使用下面的解决方案,您会注意到getFragmentManager().popBackStack();只是让它返回到之前的Fragment

@Override
public void onBackPressed() {

    int count = getFragmentManager().getBackStackEntryCount();

    if (count == 0) {
        super.onBackPressed();
        //additional code
    } else {
        getFragmentManager().popBackStack();
    }

}