0

我的应用程序使用 5 个片段,如下所示:

[1]through[onClick on actionBar defined in activity]->[2]->[3]->[4]->[5]

每个片段都被添加到后退堆栈中,因此我可以在按下后退按钮时返回。但是,当按下第 5 个片段的后退按钮时,我想返回第一个片段,如下所示:

[1]<-[2]<-[3]<-[4]   [1]<-[5]

我试图这样做:

fragmentTransaction.addToBackStack("firstfragmenttag");

当在第 4 个片段上添加第 5 个片段时,但是当我按下后退按钮时,它仍然让我回到第 4 个片段而不是第 1 个片段!这是以编程方式执行此操作的简单方法吗?提前致谢。

4

2 回答 2

1

在您的情况下,您只需要在堆栈中添加第一个片段。

无需将其他人添加到堆栈这可以通过以下方式实现:

Fragment F1 = new <Fragment Name>();
fragmenttransaction.add(R.id.content,F1).commit();

对于 F2、F3、F4 和 F5 等其他人,您可以使用

Fragment F2 = new <Fragment Name>();
fragmenttransaction.replace(R.id.content,F2).addToBackstack(null).commit();

然后你需要重写 OnBackpressed [inside Activity],如下所示:

  @Override
public void onBackPressed() {
    if(getSupportFragmentManager().getBackStackEntryCount() >0) {
        getSupportFragmentManager().popBackStack();
    }
    else{
        super.onBackPressed();
    }
}

希望能帮助到你!

于 2015-10-06T08:18:50.583 回答
0

您实际上可以在 onBackPressed 中获取 backstack 计数并检查 count ,如果是 5 则执行 popfrombackstack 4 次以返回 1 个片段

于 2015-10-06T08:42:25.007 回答