所以我想知道如何管理从NavigationDrawer启动的活动的后台堆栈。如果我默认通过NavigationDrawer启动各种活动,Android会将它们添加到后台堆栈,这将导致后退按钮地狱作为用户。
我认为这应该是一个常见问题,因此必须有足够的解决方案。
但我需要一个解决方案来满足以下3个要求。
要求1) 导航抽屉(Activity1和Activity2)中有2个项目,每个项目都会启动不同的Activites。如果我通过导航抽屉打开项目多次,当我按下时我希望返回到初始启动活动,如果我再次按回去,我希望退出应用程序
要求2) 我从Nav启动Activity 1,然后启动Activity 2,在此活动中,我启动了一个新的活动SubActivity。现在,当我按下时,我希望被带回活动2,然后如果我再次按回去,我会期望被带到初始活动(不是活动1),然后再次按回去将退出。
要求3) 与上面相同但实际上初始活动是动态的。因此,登陆活动是由用户设置他们的第一个屏幕的定义。
如您所见,由于(要求2)我无法使用NO_HISTORY标志,因为(要求3)我无法对活动的父级进行硬编码。
除了覆盖后退按钮之外还有其他方法可以操纵后台吗?
由于
答案 0 :(得分:0)
启动模式无济于事。答案在于使用TaskStackBuilder,它是一个非常强大的api,它允许您准确定义将要启动的活动的Backstack中的内容。以下是如何使用它。
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将退出应用程序。