2013-05-04 161 views
0

我遇到了非常奇怪的Android行为。SingleTask活动无法返回结果?

我有两个活动,A和B. A从startActivityForResult开始B,然后检查B的resultCode。它可以是RESULT_OK,RESULT_CANCELLEDRESULT_FIRSTUSER。不管我多么努力,只要我从B返回RESULT_FIRSTUSER,A看到了RESULT_CANCELLED

出于绝望,我想“也许是因为B是SingleTask活动”,所以我修改了清单并删除了SingleTask定义。这工作,现在RESULT_FIRSTUSER正确返回到A.

为什么?

回答

4

startActivityForResult仅当正在启动的活动与启动活动位于同一任务中时才起作用。在http://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent,INT,android.os.Bundle)

注意公文,此方法只能与被定义为返回一个结果意向协议来使用。在其他协议(如ACTION_MAIN或ACTION_VIEW)中,如果您期望,可能无法获得结果。例如,如果您正在启动的活动使用singleTask启动模式,它将不会在您的任务中运行,因此您将立即收到取消结果。

+0

这解释了为什么我看到我的活动B也开始两次了! – zmbq 2013-05-05 04:37:57