【问题标题】:Building a fragment back stack构建片段回栈
【发布时间】:2014-03-17 19:09:57
【问题描述】:

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

我的应用由一个片段活动和几个选项卡组成,每个选项卡都有一个容器片段和一些其他嵌套片段。我这样做是因为我希望每个选项卡都有自己的后台堆栈。通常(使用下面我构造不佳的图表)如果用户想要转到 frag 2B,他们会选择选项卡 B,然后选择 frag 1B,然后选择 frag 2B。

选项卡 A -> frag 1A -> frag 2A

选项卡 B -> frag 1B -> frag 2B

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

除了一篇关于使用 TaskStackBuilder link 创建带有活动的“人工”后台堆栈的 Android 文章外,我很难找到任何相关信息。虽然这几乎可以完成我想做的事情,但它看起来只能用于构建活动的后台堆栈而不是片段。

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

【问题讨论】:

    标签: android-fragments


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的建议。我会看看在我的代码中实现这样的东西,让你知道我是怎么做的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    相关资源
    最近更新 更多