如何使用填充的后退栈启动活动?

5
我有一个需要启动活动B的通知。但是,我希望用户能够“返回”到仪表板A
我想知道如何实现这一点?我需要使用意图额外启动A并在onCreate中处理该意图,然后手动启动B吗?还是可以手动指定一个后退栈?

你为什么想要“人为地”更改后退堆栈?我将用一个例子来帮助解释我的意思,Facebook应用程序向我显示我有一条通知。我查看了新的消息/照片/事件,然后按下返回按钮,回到之前按下通知时所在的位置。如果我想使用FB应用程序的其余部分,当触发通知的事件发生时,我已经在使用它了。所以我问 - 为什么在您的应用程序中,在按下返回键时我会想要看到您的应用程序的仪表板呢? - Graham Smith
是的,我同意,这对于Android来说有点不合适。我会考虑一下。 - Peterdk
这并不是错的。这正是谷歌推荐的方式,如果你要启动的活动不是“独立”的话。 - JacksOnF1re
2个回答

16
您可以使用startActivities方法一次性启动完整的Activity返回栈。
startActivities(
    new Intent[]
    {
        new Intent("my.intent.FOO_INTENT"),
        new Intent("my.intent.BAR_INTENT"),
        new Intent("my.intent.BAZ_INTENT")
    });

在这个例子中,创建了一个Baz实例并将其设置为当前Activity。
如果Baz完成,则创建一个Bar实例并将其设置为当前Activity。
如果Bar完成,则创建一个Foo实例并将其设置为当前Activity。
该方法是在API级别16中引入的,但可以通过ContextCompat类在v4支持库中使用
ContextCompat.startActivities(context,
    new Intent[]
    {
        new Intent("my.intent.FOO_INTENT"),
        new Intent("my.intent.BAR_INTENT"),
        new Intent("my.intent.BAZ_INTENT")
    });

0

我会选择自己的解决方案,创建一个Intent到Activity A,并在这个Intent中告诉Activity A它应该启动Activity B。

这种行为不是标准的Android行为。用户应该习惯使用返回按钮来回到最后一个屏幕。我不会试图劫持这个操作系统功能。

如果在您的情况下,例如通过通知将用户发送到消息的详细视图,则返回应关闭您的应用程序并返回到上一个屏幕。如果您想让用户从消息返回到整个消息收件箱,则可以使用ICS Action Bar可用的向上导航结构。听起来很复杂,但本质上只意味着您需要添加一个按钮,将用户带到收件箱。自ActionBar引入以来(我想是2010年夏季),这个向上按钮有一个标准位置。它位于屏幕的左上角。(就像iOS的返回按钮一样;)


是的,那确实可能是一个好主意。我目前没有操作栏,但也许研究一下是个不错的主意。 - Peterdk
您不需要添加完整的操作栏(在Android 3.x之前不可用)。只需记住,如果您添加了一个向上按钮,用户希望它位于屏幕左上角。 - Janusz
6
实际上,建议使用这个功能,请参见http://developer.android.com/design/patterns/navigation.html,特别是标题为“通过主屏幕小部件和通知进入您的应用程序”的部分。 - Josh
2
此外,您可以通过支持库或者更好的 ActionBarSherlock 在 Honeycomb 之前获得真正的操作栏功能。 - Josh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接