繁体   English   中英

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

[英]Finish 2 activities when starting new activity

我有4个活动:ABCD从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中检查活动堆栈时,我可以看到ABD。在调用D或D的onBackPressed时如何从堆栈中删除B? 请注意,启动C时我需要B,这就是为什么我在启动C时没有尝试调用finish()的原因。

如何从D活动加载活动。

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

实现此目的的一种方法是,当您按回活动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。

只需使用:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM