Android 完成后未调用OnActivityResult

Android 完成后未调用OnActivityResult,android,android-activity,Android,Android Activity,我有一系列的多个活动,在某个时候我想进入我的应用程序的不同部分,我不想在堆栈中有以前的活动。 它是这样的:活动A->活动A1->活动A2->活动A3->活动B 当我开始活动B时,我想关闭所有As活动 我认为最简单的方法是setResult然后finish完成上一个活动,然后在前面的活动中查找结果,并在传递相同的数据后关闭活动 所以我setResult然后finishA3,然后再启动B 问题是A3已经完成,但是在我关闭B以便A2应该恢复之前,onActivityResult不会在A2上调用 我认为

我有一系列的多个活动,在某个时候我想进入我的应用程序的不同部分,我不想在堆栈中有以前的活动。 它是这样的:活动A->活动A1->活动A2->活动A3->活动B

当我开始活动B时,我想关闭所有As活动

我认为最简单的方法是
setResult
然后
finish
完成上一个活动,然后在前面的活动中查找结果,并在传递相同的数据后关闭活动

所以我
setResult
然后
finish
A3,然后再启动B

问题是A3已经完成,但是在我关闭B以便A2应该恢复之前,
onActivityResult
不会在A2上调用

我认为如果在活动结果上启动另一个活动,则不能将其传播到多个活动


那我就被封锁了。我不知道该怎么办,也不知道是否有其他方法可以一次关闭多个活动。

一次只能激活一个活动,因此,当您完成A3并启动B时,无法调用B,B现在已激活到A2

此问题的解决方案是在ActivityResult上移动到ActivityA中的B

完成所有其他活动,并在活动结果的第一个活动中启动B并完成

如果您使用的是API 11及以上版本,则可以设置如下标志:

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

启动
活动b
时。这将在ActivityB之前完成所有活动

一次只能有一个活动处于活动状态,因此当您完成A3并启动B时,将无法调用B,而B现在已激活为A2

此问题的解决方案是在ActivityResult上移动到ActivityA中的B

完成所有其他活动,并在活动结果的第一个活动中启动B并完成

如果您使用的是API 11及以上版本,则可以设置如下标志:

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

启动
活动b
时。这将在ActivityB之前完成所有活动

假设您已经开始了活动A1,并且从A1开始了A2,此时您想从A2开始A3

 finish();
setResult(0);
然后A1的诞生将在那里被称为检查

如果 结果代码==0 完成()
然后开始A3

假设您已经开始活动A1,现在从A1开始A2,当您想从A2开始A3时

 finish();
setResult(0);
然后A1的诞生将在那里被称为检查

如果 结果代码==0 完成()
然后开始A3

您必须使用startActivityForResult()开始A的所有活动。当你开始活动B时,
在A3中设置结果并完成A3
。A3一完成,就会调用activityResult()上的
A2,设置结果并完成它。A2完成后,将调用A1的onActivityResult。现在,对活动结束后的结果执行任何操作


或者,您可以在A的所有子活动完成后从A启动B。

您必须使用startActivityForResult()启动A的所有活动。。当你开始活动B时,
在A3中设置结果并完成A3
。A3一完成,就会调用activityResult()上的
A2,设置结果并完成它。A2完成后,将调用A1的onActivityResult。现在,对活动结束后的结果执行任何操作


或者,您可以在A的所有子活动完成后从A启动B。

当您打算下一个活动时,您无法完成()活动?关闭A2而不启动B。当从A收集到onActivityResult时,启动B您可以使用“startActivityForResult()”启动活动?您无法完成()当您打算进行下一个活动时,请启动活动?关闭A2而不启动B。当收集到来自A的ActivityResult时启动B您可以使用“startActivityForResult()”?是的,我知道,API 8对我来说:(所以只需在第一个活动中启动B。是的,我知道,API 8对我来说:(因此,在第一个活动中启动B。这将立即关闭A2?是的A2将关闭,在A1的活动结果中,您应该关闭finish A1并启动A3A,这将立即关闭A2?是的A2将关闭,在A1的活动结果中,您应该关闭finish A1并启动A3A这就是问题所在,如果我同时启动新活动,A2不会立即调用。在多个活动之间传递“活动结果”中的数据可能有点烦人,但这是正确的方法。这就是问题所在,如果我同时启动新活动,则不会立即调用A2。在多个活动之间传递“活动结果”中的数据可能有点烦人,但这是正确的方法去做吧。