我收到了需要启动活动B
的通知。但是,我希望能够让用户“返回”到Dasboard A
。
我想知道如何做到这一点?我是否需要使用intent extra来启动A并在onCreate
中处理该意图,然后手动启动B
?或者是否可以手动指定backstack?
答案 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后退按钮;))