当前位置: 首页 > 知识库问答 >
问题:

清除堆栈活动并完成[复制]

谢叶五
2023-03-14

举个例子,

我有活动 A、B、C、D

A呼叫B

Intent intent = new Intent(A,B.class);

startActivity(intent);

然后,B呼叫C

Intent intent = new Intent(B,C.class);

startActivity(intent);

之后,C呼叫D

Intent intent = new Intent(C,D.class);

startActivity(intent);

在活动D中,我调用完成()。它将返回活动C。

我的问题是,在调用<code>finish()

不要建议在每次开始活动时都调用 finish(),因为应用可以按回上一个活动以继续。

共有3个答案

鲜于宜修
2023-03-14

尝试添加FLAG_ACTIVITY_NEW_TASK

所以你的代码是:

Intent intent = new Intent(this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
白弘伟
2023-03-14
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_SINGLE_TOP
FLAG_ACTIVITY_CLEAR_TASK
FLAG_ACTIVITY_NEW_TASK

这确保了如果一个实例已经在运行并且不在顶层,那么在它上面的任何东西都将被清除并被使用,而不是启动一个新的实例(这在你完成活动A -后很有用)

蒙墨竹
2023-03-14

这绝对应该有效...

Intent intent = new Intent(D,A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("close",true);
startActivity(intent);

and in oncreat of A activity u have to write
if (getIntent().getBooleanExtra("close", false)) {finish();
}
else {
{
 //ur previous code here
}

如果有什么问题你可以问

 类似资料:
  • 我知道关于这个主题,已经有很多关于堆栈溢出的问题,但没有什么对我有用。我想实现的是,我想清除特定方法调用上堆栈后的所有活动。 假设我在我的应用程序中有一个入口点,即方法。现在我从五个不同的活动中调用此方法。登录后始终显示一个屏幕。现在我想实现的是,无论从哪里调用如果登录成功,那么用户应该转到下一个活动(活动2),并且在双击该活动(活动2)时,用户应该退出应用程序。那就是我希望我的活动后堆栈在方法成

  • 问题内容: 我已经阅读了有关使用此功能的几篇文章,但一定会丢失一些东西,因为它对我不起作用。我的活动A在清单中有launchmode =“ singleTop”。它以launchmode =“ singleInstance”启动活动B。活动B打开浏览器并接收并返回意图,这就是为什么它是singleInstance的原因。我试图覆盖“后退”按钮,以便将用户发送回活动A,然后可以按“上一步”离开活动,

  • 问题内容: 我有两组活动,假设每组3个活动,(A1,B1,C1 || A2,B2,C2)我从A1启动我的App,然后-> B1-> C1在这里我想从C1跳到-> A2在A2处,如果我按回去,它应该存在该应用程序,而不是退回给C1,然后从A2导航到-> B2-> C2。 因此,基本上我想更改启动的Activity,就像我在一个App中有两个App,而当我切换到第二个App时,我必须清除Activit

  • 好吧,所以我有点困惑该怎么处理这个。因此,我有了主活动,从那里可以启动一个活动到DegreePlan活动,从那里可以启动另一个活动到EditDegreeplan。我已经将EditDegreeplan设置为在Android清单中没有历史记录。问题是在他们保存EditDegreeplan后,它会启动一个活动到Degreeplan。因此,如果用户按下后退键,他们必须按两次才能再次进入主活动。我想摆脱它,

  • 我已经从连接到NavController的导航抽屉中导航到了DialogFragment。但当我导航到另一个目标时,我已经将弹出窗口设置为包含对话框片段,但它并没有清除堆栈。如何清除堆栈? AM从LogoutDialog调用此方法 我只使用片段和一个活动。 这是我导航图的一部分

  • 问题内容: 我的Java堆栈跟踪中有很多我不关心的条目,它们显示了通过代理和Spring反射方法以及类似内容进行的方法调用。很难从我的代码中挑选出堆栈跟踪的一部分。Ruby on Rails包含一个“堆栈跟踪清理器”,您可以在其中指定要从打印的堆栈跟踪中忽略的堆栈跟踪模式列表-对于Java而言,这样做的最佳方法是什么? 最好在任何地方都可以使用它,包括在Eclipse jUnit运行程序中。 问题