我有一個關於Activity.finish()
的問題。Activity.finish()和startActivityForResult()如何相互協作?
在我的Android代碼,有4個活動(甲,乙,Ç,d)。開始活動A致電startActivityForResult(intent, reqCode)
開始活動B。 B開始C,然後finish()
,不等待結果。 C確實與B完全相同,開始D然後finish()
。 D將返回一些結果,由setResult(resultCode)
。
當我的代碼運行和活動d返回了一些成績,一個將捉對onActivityResult()
一個RESULT_CANCELED
,即使RESULT_OK
在d返回。我猜RESULT_CANCELED
來自活動B,它已經在D之前被終止而不是從D返回結果。
不過,我的問題是,爲什麼活動一個抓RESULT_CANCELED
後d返回一些結果,而不是乙終止後立即?而且,我應該怎麼做A捕獲結果來自D?我必須保留B和C活着,要通過結果從D到A?
是的,你將不得不保持B和C活着。一旦他們收到結果並傳遞給他們,你可以完成()他們。例如,您可以在完成C後收到D的結果並將其傳遞給B.希望它有助於:) – 2010-11-12 08:30:52
謝謝。讓B和C保持活力真的對我有用,但它也帶來更多代碼來處理結果傳遞。 A是否可以直接從D接收?另一個問題是,爲什麼活動A在D返回一些結果後捕獲RESULT_CANCELED?如果A從B得到結果,我猜應該在B完成後立即得到結果。 – MaratSafinWang 2010-11-15 00:58:02