如何使用填充后台堆栈启动活动?

时间:2012-01-30 12:25:58

标签: android android-activity

我收到了需要启动活动B的通知。但是,我希望能够让用户“返回”到Dasboard A

我想知道如何做到这一点?我是否需要使用intent extra来启动A并在onCreate中处理该意图,然后手动启动B?或者是否可以手动指定backstack?

2 个答案:

答案 0 :(得分:15)

您可以使用startActivities方法一次性启动完整的活动背景。

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实例并将其作为当前活动。

此方法在API级别16中引入,但在available类的v4支持库中为ContextCompat

ContextCompat.startActivities(context,
    new Intent[]
    {
        new Intent("my.intent.FOO_INTENT"),
        new Intent("my.intent.BAR_INTENT"),
        new Intent("my.intent.BAZ_INTENT")
    });

答案 1 :(得分:0)

我会使用您自己的解决方案,并为活动A创建一个Intent,并以某种方式告诉此Intent中的活动A它应该启动活动B.

此行为不是标准的Android行为。应该使用用户使用后退按钮进入最后一个屏幕。我不会试图劫持这个操作系统功能。

如果在您的情况下,例如用户通过通知发送到消息的详细视图,则应关闭您的应用并返回上一屏幕。如果您希望为用户提供从消息“返回”到整个消息收件箱的可能性,请使用可与ICS操作栏一起使用的up navigation结构。听起来很复杂,但实质上它只意味着您需要添加一个将用户带到收件箱的Button。自从Actionbar(我认为2010年夏天)推出以来,这个按钮就有一个标准位置。它位于屏幕的左上角。 (就像iOS后退按钮;))