我有一个包含3项活动的Android应用。
活动1:
- 按钮注册1
- 按钮注册2
活动2:
- 按钮CreateAccount
活动3:
流程如下:
活动_______ UserAction ____________结果
1 ____________点击SignUp1____________Move to Act2
2 ____________点击CreateAccount_____Move to Act3
3
我想知道的是,当我进入活动3时,如何阻止用户返回所有以前的活动,而不仅仅是前一个活动(activity2)。
我环顾四周,人们总是建议在Activity2中的startActivity()之后调用finish()。但这不会起作用,因为android会将用户引导回activity1。
除此之外,在Activity1中,我不想在startActivity()之后调用finish(),因为我想让用户从Activity2返回到Activity1(比如,他们想要使用SignUp2)。
总而言之,只有当用户到达Activity3时,才能阻止他们返回任何其他先前的活动。
我如何实现这一目标?
答案 0 :(得分:4)
您可以尝试将此标记添加到Activity3
intent:
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
这应该强制清除Activity backstack
答案 1 :(得分:1)
@Override
public void onBackPressed() {
super.onBackPressed();}
使用此功能,您可以准确地告诉android在后退的情况下该怎么做。
如果您可以根据自己的要求覆盖onPause和onDestroy方法,也是个好主意,请通过android生命周期以更清晰地了解此
答案 2 :(得分:1)
如果您只是担心使用设备的后退按钮在活动之间导航,那么考虑到所呈现的限制,您应该能够通过覆盖Activity
的{{3}}来实现您想要的效果。方法。确保实现为空,如下所示:
@Override public void onBackPressed() { /* Empty */ }
这将阻止Android完成活动的onBackPressed()
的标准实施。
答案 3 :(得分:1)
使用以下标志开始您的活动:
(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK)