使用startActivityForResult()然后finish()

时间:2014-01-09 10:39:23

标签: java android android-intent

我的Android应用中有一个需要打开另一个视图的视图

并关闭\完成使其打开的所有调用层次结构。

我该怎么做?

如果我使用此代码,则finish()永远不会被称为no?

Intent intent = new Intent(A.this, B.class);
setResult(RESULT_OK);
startActivity(intent);
finish();

2 个答案:

答案 0 :(得分:0)

您可以使用以下方式清除整个堆栈:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

如果您想要开始新活动,并关闭之前打开的所有活动,这是一个解决方案。

答案 1 :(得分:0)

Google在Android后台here上有一篇内容丰富的文章。

在你的代码中,.finish()被调用,你的调用活动应该完成,但只有那个Activity而不是后堆栈中的其他人。你可以通过文章中解释的Intent标志来保持对后栈的一些控制,即FLAG_ACTIVITY_NEW_TASK, FLAG_ACTIVITY_CLEAR_TOP, FLAG_ACTIVITY_SINGLE_TOP

另一种方法是使用startActivityForResult(...)并在onActivityResult(..)返回到前台时Activity方法中关闭不需要的活动。