Android 完成后未调用OnActivityResult
我有一系列的多个活动,在某个时候我想进入我的应用程序的不同部分,我不想在堆栈中有以前的活动。 它是这样的:活动A->活动A1->活动A2->活动A3->活动B 当我开始活动B时,我想关闭所有As活动 我认为最简单的方法是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上调用 我认为
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。在多个活动之间传递“活动结果”中的数据可能有点烦人,但这是正确的方法去做吧。