3

在应用程序中,活动堆叠如下:A -> B -> C -> D -> E。如果我收到特定通知并单击它,Activity则启动 E。如果我然后单击返回(手机上的按钮或操作栏上的按钮),应用程序将退出。

在这种情况下,我如何过渡到ActivityD,然后再通过 C、B 和 A?

我的后退按钮代码:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        finish();
        break;
    }
    return true;
}

正常启动应用程序时一切正常。问题是何时Activity从通知开始。

4

2 回答 2

3

Android 具有内置的功能,并且已经有据可查。首先,您应该查看TaskStackBuilder类。它是在 JellyBean 中引入的,但已经包含在支持库中,您可以使用它来构建您需要的合成 TaskStack。文档摘要如下:

当从一个任务堆栈跨到另一个后 Android 3.0 时,应用程序应该为新任务合成一个返回堆栈/历史记录,以便用户可以通过重复按下返回键导航出新任务并返回启动器。后退键不应跨任务堆栈导航。

TaskStackBuilder 提供了一种遵循跨任务导航的正确约定的方法。

你如何构建它取决于你的应用程序中活动的关系,但是任务和返回堆栈开发人员指南是一个很好的阅读指南,可以帮助你做出决定,就像导航设计指南一样,如果这就是全部对你来说是新的。

您可以在 Android 开发者网站的培训部分的实施有效导航课程中找到一些代码示例。

顺便提一下, 上的按钮ActionBar被称为Up。尽管它有时与后退按钮具有相同的功能,但两者并不相同(我认为这就是您正在谈论的那个 ;-) 。)

于 2012-08-16T15:39:51.090 回答
1

我认为您可以通过将意图从活动 E 发送到活动 D 来解决您的问题,依此类推。因此,您应该覆盖该方法

onBackPressed()

当您单击后退按钮时会调用它。

于 2012-08-13T14:44:48.340 回答