[英]How Activity.finish() & startActivityForResult() collaborate with each other?
我有一個關於Activity.finish()
的問題。
在我的Android代碼中,有4個活動( A , B , C , D )。 起始活動A調用startActivityForResult(intent, reqCode)
來啟動活動B. B開始C ,然后finish()
,而不是等待結果。 C與B完全相同,啟動D然后finish()
。 D將通過setResult(resultCode)
返回一些結果。
當我的代碼運行並且活動D返回一些結果時, A將在onActivityResult()
上捕獲RESULT_CANCELED
,即使在D中返回RESULT_OK
也是如此。 我猜RESULT_CANCELED
來自活動B ,它在D返回結果之前終止,而不是從D結束 。
但是,我的問題是,為什么活動A在D返回一些結果之后捕獲RESULT_CANCELED
,而不是在B終止后立即? 而且,我應該怎么做才能讓從d 的 catch結果? 我必須保持B和C活着,將結果從D傳遞到A嗎?
從你的解釋,我明白活動A開始B開始C和C開始D。
B啟動C后調用finish()
, C也執行相同操作。
由於B已經由A啟動,它將等待B的結果,因為A沒有鏈接到D ,即使D返回一些結果也沒關系。
如果要在A的 onActivityResult()
中獲取RESULT_OK
,則必須從B接收有效結果。 為此,你必須在C中接收D的結果,然后將其傳遞給B,然后從B傳遞給A。
在通過Intent將結果傳遞回各自的調用活動之后,您可以在B和C的 onActivityResult()
中調用finish()
。
我想,我理解你的問題。 如果錯了,請原諒我。
使用標志Intent.FLAG_ACTIVITY_FORWARD_RESULT
啟動活動B和C.
可能這不太合理,但為什么不把你**set result of B and C to RESULT_OK**
依賴於某些情況評估。 我希望
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.