首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android为活动管理后台

Android为活动管理后台
EN

Stack Overflow用户
提问于 2016-06-02 21:07:15
回答 1查看 179关注 0票数 0

因此,我想知道如何管理从NavigationDrawer启动的活动的后台堆栈。如果我通过NavigationDrawer启动各种活动,默认情况下,Android会将它们添加到后台堆栈中,这会导致用户返回按钮地狱。

我认为这应该是一个共同的问题,因此必须有一个适当的解决办法。

但我需要一个解决方案,以满足以下3项要求。

需求1)我在导航抽屉中有两个条目(Activity1和Activity2),每个条目启动不同的活动。如果我多次通过导航抽屉打开项目,当我按后退时,我希望回到最初的开始活动,如果我再次按下,我希望退出应用程序。

需求2)我从Nav启动活动1,然后启动活动2,并在此活动中启动一个新的活动SubActivity。现在,当我按后键时,我希望被带回到活动2,然后如果我再次按下,我会期望被带回到最初的活动(而不是活动1),然后再按回按就会退出。

需求3)与上述相同,但实际上初始活动是动态的。因此,登陆活动是由用户设定他们的第一个屏幕应该是什么。

正如您所看到的,我不能使用NO_HISTORY标志,因为(需求2),并且由于(需求3),我不能硬编码活动的父级。

因此,除了重写back按钮之外,还有其他方法可以操作back堆栈吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-05 17:25:43

发射模式不会有帮助。答案在于使用TaskStackBuilder,它是一个非常强大的api,它允许您精确地定义将要启动的活动的后台内容。以下是如何使用它。

代码语言:javascript
复制
 Intent activityInBackstack = new Intent(this, ActivityA.class);
 Intent activityToBeLaunched = new Intent(this, ActivityB.class);
 TaskStackBuilder builder = TaskStackBuilder.create(this);
 builder.addNextIntent(activityInBackstack); 
 builder.addNextIntent(activityToBeLaunched);
 builder.startActivities();

所以现在,如果您在ActivityB中,然后按下后退按钮,那么您将始终转到ActivityA。按回ActivityA就会退出应用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37602118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档