所以...... 让我们假设以下活动顺序
A - > B - > C - > D - > ë
如果我在E中执行Action1
我只想从堆栈中删除E并返回到D.
另一方面,如果我在E中执行Action2
,我想从堆栈中删除E和D并返回到C
怎么做?
上面的序列是消息App的简单实现,所以A是登录活动,B是Profile活动,C显示好友请求列表,D显示所选人员C的个人资料,而在C中有2个按钮一个用于批准,第二个用于取消requset,现在如果单击其中任何一个,则将其带到E,其中是或否执行操作,如果否则返回到选定人员的配置文件,是的它应该返回到C
答案 0 :(得分:0)
你能做的就是当你从A-> B调用finish();
来结束活动A时,对于B-> C来说也是如此,那就是结束B.所以当你到达E时,只有E才会有效。所以现在当你Action1
进行Action2
时,请拨打活动D,然后进行finish();
来电活动C.这次在E上调用{{1}}。这样就可以完全按照自己的意愿行事。
答案 1 :(得分:0)
如果Action1
没有做任何事情,因为如果用户按下后退按钮,E
将被删除,您将返回D
。如果Action2
,请使用标记C
启动Intent.FLAG_ACTIVITY_CLEAR_TOP
,D
和E
将从堆栈中清除
答案 2 :(得分:0)
每次从一个Activity移动到另一个Activity时,您都可以使用Intent.FLAG_ACTIVITY_CLEAR_TOP意图添加此标志。这将清除您之前的所有活动,以便在活动E中堆栈中没有活动。
答案 3 :(得分:0)
如果它始终是要执行此类操作的最后一个活动,那么您可以为结果启动最后一个活动。所以当D产生E时,使用startActivityForResult (Intent intent, int requestCode)来做。稍后当您在E中执行操作时,请为E调用finish()
并在此之前将结果代码传递给D.根据该结果,您可以不执行任何操作(因此D将保持不变)或者您可以调用D上也finish()
。
答案 4 :(得分:0)
如果通过堆栈表示最近的应用程序然后清除最近的应用程序,则可以添加
android:excludeFromRecents="true"
在manifest.xml
中的activity标记内