我有5项活动,
A - 基础活动
B,C,D - 正常活动
E - 最终活动
A-B-C-d-E
我从A到B导航到C到D,D把我带到E.我想要行为:如果我按下D上的按钮它应该带我到C,C的后退按钮应该带我到B到A但是如果我从D转移到活动E,我想要E的后退按钮它应该带我去跳过B,C和D.
答案 0 :(得分:2)
在E
:
@Override
public void onBackPressed() {
Intent intent = new Intent(this, ActivityA.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
}
这将返回A
,完成B
,C
,D
和E
。
使用FLAG_ACTIVITY_SINGLE_TOP
可确保您返回A
的现有实例。如果您还要完成现有的A
实例并创建一个新的实例,只需删除FLAG_ACTIVITY_SINGLE_TOP
。
答案 1 :(得分:1)
您可以使用静态变量来跟踪您来自哪个活动。然后重写onBackPressed以检查该变量并移至相应的活动。类似的东西:
public static Boolean skipActivities = false;
然后当您从D开始活动E时将其设置为true。为了您的活动E:
@Override
public void onBackPressed() {
if (skipActivities){
//start activity A, skipActivities should be reset to false also
} else {
super.onBackPressed();
}
}
答案 2 :(得分:0)
您可以使用affinity
对您的活动进行“分组”。
因此,在Manifest文件中,将android:taskAffinity="activity.normal"
添加到活动B,C,D,E中。现在,您可以通过调用finishAffinity()
(而不是通常的finish()
)来完成这些活动中的所有群组,在您的情况下,您只需添加到E活动:
@Override
public void onBackPressed() {
finishAffinity();
super.onBackPressed();
}