我遇到了非常奇怪的Android行为。
我有两个活动,A和B. A用startActivityForResult
启动B,然后检查B的resultCode。它可以是RESULT_OK
,RESULT_CANCELLED
或RESULT_FIRSTUSER
。无论我多努力,每当我从B回来RESULT_FIRSTUSER
时,A都会看到RESULT_CANCELLED
。
出于绝望,我想“也许是因为B是SingleTask活动”,所以我修改了清单并删除了SingleTask
定义。这很有效,现在RESULT_FIRSTUSER
正确地返回给A.
为什么?
答案 0 :(得分:4)
startActivityForResult仅在启动的活动与启动活动位于同一任务中时才有效。官方文件http://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent,int,android.os.Bundle)
请注意,此方法只应与定义为返回结果的Intent协议一起使用。在其他协议(例如ACTION_MAIN或ACTION_VIEW)中,您可能无法获得预期的结果。例如,如果您要启动的活动使用singleTask启动模式,它将不会在您的任务中运行,因此您将立即收到取消结果。