构建片段后栈

时间:2014-03-17 19:09:57

标签: android-fragments

我是Android /编程新手,目前无法让我的应用程序将用户直接指向带有向后导航的选项卡中的第二个片段(点击后退按钮应加载第一个片段而不关闭应用) 。

我的应用程序由一个片段活动和几个选项卡组成,每个选项卡都有一个容器片段和一些其他嵌套片段。我已经完成了这项工作,因为我希望每个标签都有自己的后台堆栈。通常(使用我下面构造得很糟糕的图表)如果用户想要去碎片2B,他们会选择标签B,然后是碎片1B然后碎片2B。

标签A - > frag 1A - > frag 2A

标签B - > frag 1B - > frag 2B

然而,当收到新的消息通知时,我的片段活动中有一个广播接收器,它显示一个警告对话框,询问用户是否想要查看新消息。选择“是”'应该让用户从应用程序的任何地方直接看到消息片段(比如说,片段2B)(例如标签A,片段2A)。我可以在“是”的情况下添加片段交易。选择此选项,虽然这将使用户直接进入frag 2B,显然仍未将碎片1B添加到后堆栈中,因此当用户点击后退按钮而不是看到碎片1B应用程序关闭时。我认为放置事务也是错误的地方,因为我的容器片段是使用getChildFragmentManager()创建嵌套片段的地方。

除了关于创建“人工”的​​Android文章之外,我一直无法找到任何相关信息。使用TaskStackBuilder link使用活动返回堆栈。虽然这几乎与我想做的事情相似,但它看起来只能用于构建一堆活动而不是碎片。

有人能指出我正确的方向,即网上的文章/教程或任何做类似事情的经验吗?

1 个答案:

答案 0 :(得分:0)

有很多方法可以解决这个问题,但开始使用的好地方是覆盖后退按钮。这将允许您控制用户按下后退按钮时发生的情况。

@Override
public void onBackPressed() {       
        if (on frag 2B && some condition) {
            //send user to frag 1B
        } else {
            super.onBackPressed();
        }
}