因此,我想知道如何管理从NavigationDrawer启动的活动的后台堆栈。如果我通过NavigationDrawer启动各种活动,默认情况下,Android会将它们添加到后台堆栈中,这会导致用户返回按钮地狱。
我认为这应该是一个共同的问题,因此必须有一个适当的解决办法。
但我需要一个解决方案,以满足以下3项要求。
需求1)我在导航抽屉中有两个条目(Activity1和Activity2),每个条目启动不同的活动。如果我多次通过导航抽屉打开项目,当我按后退时,我希望回到最初的开始活动,如果我再次按下,我希望退出应用程序。
需求2)我从Nav启动活动1,然后启动活动2,并在此活动中启动一个新的活动SubActivity。现在,当我按后键时,我希望被带回到活动2,然后如果我再次按下,我会期望被带回到最初的活动(而不是活动1),然后再按回按就会退出。
需求3)与上述相同,但实际上初始活动是动态的。因此,登陆活动是由用户设定他们的第一个屏幕应该是什么。
正如您所看到的,我不能使用NO_HISTORY标志,因为(需求2),并且由于(需求3),我不能硬编码活动的父级。
因此,除了重写back按钮之外,还有其他方法可以操作back堆栈吗?
谢谢
发布于 2016-06-05 17:25:43
发射模式不会有帮助。答案在于使用TaskStackBuilder,它是一个非常强大的api,它允许您精确地定义将要启动的活动的后台内容。以下是如何使用它。
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就会退出应用程序。
https://stackoverflow.com/questions/37602118
复制相似问题