2013-05-04 58 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