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

Pet*_*rdk 4 android android-activity

我有一个需要启动活动的通知B.但是,我希望能够让用户"返回"Dasboard A.

我想知道如何做到这一点?我是否需要使用intent extra来启动A并处理该intent onCreateB手动启动?或者是否可以手动指定backstack?

Dea*_*ild 15

您可以使用startActivities方法一次性启动完整的活动后台堆栈.

startActivities(
    new Intent[]
    {
        new Intent("my.intent.FOO_INTENT"),
        new Intent("my.intent.BAR_INTENT"),
        new Intent("my.intent.BAZ_INTENT")
    });
Run Code Online (Sandbox Code Playgroud)

在此示例中,创建了一个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")
    });
Run Code Online (Sandbox Code Playgroud)


Jan*_*usz 0

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

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

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

  • 实际上建议使用此功能,请参阅http://developer.android.com/design/patterns/navigation.html,特别是标题为“通过主屏幕小部件和通知导航到您的应用程序”的部分。 (6认同)
  • 此外,您还可以通过支持库获得 Honeycomb 之前的真实操作栏功能,甚至更好的 ActionBarSherlock。 (2认同)