我有一系列的多项活动,在某些时候我想进入我的应用程序的不同部分,而且我不想在堆栈中使用之前的活动。 它是这样的:Actvity A - >活动A1 - >活动A2 - >活动A3 - >活动B
当我开始活动B时,我想关闭所有的As活动。
最简单的方法我认为是setResult
然后是finish
最后一个活动,而在之前的活动中查找结果并在传递相同数据后关闭活动。< / p>
在开始B之前我setResult
然后finish
A3。
问题是A3已经完成,但在A2上没有调用onActivityResult
,直到我关闭B以便A2应该恢复。
我认为如果在其上启动另一个活动,onActivityResult
无法传播到多个活动。
然后我被阻止了。我不知道自己该做什么,或者是否有其他办法可以同时关闭多重活动。
答案 0 :(得分:4)
您必须使用startActivityForResult()启动所有A的活动。当你开始活动B时,
setResult in A3 and finish A3
。 A3完成后,将调用A2 onActivityResult()
,setResult并完成它。 A2完成后,A1的onActivityResult将被调用。现在,对关闭活动的结果做任何你想做的事。
或者你可以在完成A的所有子活动后从A开始B.
答案 1 :(得分:1)
一次只能激活一个活动,所以当你完成A3并且无法调用现在激活到A2的启动B时。
此解决方案将移至ActivityA
onActivityResult
中的B.
完成所有其他活动,并在第一个活动onActivityResult
启动B并完成。
如果您使用的是API 11及更高版本,则可以设置如下标记:
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TASK);
当你开始ActivityB
时。这将完成ActivityB之前的所有活动。
答案 2 :(得分:-2)
假设您已经开始活动A1,并且从A1开始A2,当你想从A2开始A3时,
finish();
setResult(0);
那么A1的诞生将在那里被称为检查
如果是的话 resultCode为== 0 完() 然后开始A3