举个例子,
我有活动 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(),
因为应用可以按回上一个活动以继续。
尝试添加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);
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_SINGLE_TOP
FLAG_ACTIVITY_CLEAR_TASK
FLAG_ACTIVITY_NEW_TASK
这确保了如果一个实例已经在运行并且不在顶层,那么在它上面的任何东西都将被清除并被使用,而不是启动一个新的实例(这在你完成活动A -后很有用)
这绝对应该有效...
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运行程序中。 问题