我有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()的原因。 预先感谢
答案 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));