在应用程序活动中堆叠如下:A - > B - > C - > D - > E.
如果我收到特定通知并单击它,则会启动Activity
E.
如果我然后单击后退(电话上的按钮或操作栏上的按钮),则应用程序退出。
在这种情况下如何转换到Activity
D,然后通过C,B和A转换?
我的后退代码:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
break;
}
return true;
}
正常启动应用程序时一切正常。问题是Activity
从通知开始。
答案 0 :(得分:3)
Android具有您内置的功能,并且已经有详细记录。首先,您应该查看TaskStackBuilder类。它是在JellyBean中引入的,但已经包含在the support library中,您可以使用它来构建合成的TaskStack,这就是您所需要的。文档摘要如下:
当从一个任务堆栈交叉到另一个后Android 3.0时,应用程序应合成新任务的后备堆栈/历史记录,以便用户可以导航出新任务并通过重复按下该任务返回到启动器。后退键。后退键不应在任务堆栈之间导航。
TaskStackBuilder提供了一种遵循跨任务导航的正确约定的方法。
如何构建它取决于应用中活动的关系,但Tasks and Back Stack开发人员指南是一本很好的解决方案,可帮助您做出决定,Navigating with Up and Back设计指南也是如此。如果这对你来说都是新的。
您可以在培训部分的Implementing Effective Navigation课程中找到一些代码示例,也可以在Android开发者网站上找到。
顺便说一下,ActionBar
上的按钮被称为 Up 。即使它有时与后退按钮具有相同的功能,但两者并不相同(我假设你正在谈论的那个;-)。)
答案 1 :(得分:1)
我认为您可以通过将活动E中的意图发送到活动D来解决您的问题,依此类推。 因此,您应该覆盖方法
onBackPressed()
单击后退按钮时调用。