开始新活动时完成2个活动

时间:2019-07-09 15:53:53

标签: android

我有4个活动:A B C D 从C开始活动D时,应从堆栈中删除B和C。因此,顺序如下: A> B> C> D然后D> A 从C启动D时,我尝试做的是:

//create new Intent(C,D)
//setflags Intent.FLAG_ACTIVITY_CLEAR_TOP
//startActivity
//finish C

在D中调用onBackPressed时,将显示活动B。好像没有完成。当在Layout Inspector中检查活动堆栈时,我可以看到A BD。如何在调用D或D的onBackPressed时从堆栈中删除B?请注意,启动C时我需要B,这就是为什么我在启动C时没有尝试调用finish()的原因。 预先感谢

3 个答案:

答案 0 :(得分:0)

如何从D活动中加载活动。

Intent intent = new Intent(getBaseContext(), A.class);
startActivity(intent); 

答案 1 :(得分:0)

实现此目的的一种方法是,当您按回活动D时,只需用标志FLAG_ACTIVITY_CLEAR_TOP开始活动A。这会将已经存在的活动A置于最前面,并清除所有其他活动。

@Override
void onBackPressed() {
     Intent intent = new Intent(this, A.class);
     intent.setFlags(FLAG_ACTIVITY_CLEAR_TOP);
     startActivity(intent);
}

注意:这还将从堆栈中清除活动D,因此您将不能按回去活动D。

答案 2 :(得分:0)

只需使用:

startActivity(new Intent(this, A.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK));