簡體   English   中英

Activity.finish()和startActivityForResult()如何相互協作?

[英]How Activity.finish() & startActivityForResult() collaborate with each other?

我有一個關於Activity.finish()的問題。

在我的Android代碼中,有4個活動( ABCD )。 起始活動A調用startActivityForResult(intent, reqCode)來啟動活動B. B開始C ,然后finish() ,而不是等待結果。 CB完全相同,啟動D然后finish() D將通過setResult(resultCode)返回一些結果。

當我的代碼運行並且活動D返回一些結果時, A將在onActivityResult()上捕獲RESULT_CANCELED ,即使在D中返回RESULT_OK也是如此。 我猜RESULT_CANCELED來自活動B ,它在D返回結果之前終止,而不是從D結束

但是,我的問題是,為什么活動AD返回一些結果之后捕獲RESULT_CANCELED ,而不是在B終止后立即? 而且,我應該怎么做才能讓從d catch結果? 我必須保持BC活着,將結果從D傳遞到A嗎?

從你的解釋,我明白活動A開始B開始CC開始D。

B啟動C后調用finish()C也執行相同操作。

由於B已經由A啟動,它將等待B的結果,因為A沒有鏈接到D ,即使D返回一些結果也沒關系。

如果要在A的 onActivityResult()中獲取RESULT_OK ,則必須從B接收有效結果。 為此,你必須在C中接收D的結果,然后將其傳遞給B,然后從B傳遞給A。

在通過Intent將結果傳遞回各自的調用活動之后,您可以在BC的 onActivityResult()中調用finish()

我想,我理解你的問題。 如果錯了,請原諒我。

使用標志Intent.FLAG_ACTIVITY_FORWARD_RESULT啟動活動BC.

可能這不太合理,但為什么不把你**set result of B and C to RESULT_OK**依賴於某些情況評估。 我希望

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM