我的Android应用中有一个需要打开另一个视图的视图
并关闭\完成使其打开的所有调用层次结构。
我该怎么做?
如果我使用此代码,则finish()永远不会被称为no?
Intent intent = new Intent(A.this, B.class);
setResult(RESULT_OK);
startActivity(intent);
finish();
答案 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
方法中关闭不需要的活动。