onActivityResult方法的使用


轉發自:https://blog.csdn.net/hacker_crazy/article/details/78345450

 

在進行界面間的跳轉和傳遞數據的時候,我們有的時候要獲得跳轉之后界面傳遞回來的狀態,數據等信息。這個時候,我們不一定需要使用Intent進行跳轉回原先設置的界面,而是使用onActivityResult方法就可以解決這個問題。

原理如圖:

 

 

 

我們這里假設有A、B兩個Activity,由A跳轉到B,然后B返回到A。

在這一過程中,我們在A啟動B的過程中調用startActivityForResult()方法來啟動B,

然后在B中調用Context.setResult()方法來傳遞返回的Code,

並在A中的onActivityResult()方法中解析返回的結果,並做相應的邏輯操作。

 

對幾個方法的解釋:

1.startActivityForResult(Intent Intent, int requestCode):

該方法要在onCreate中調用,傳遞的參數有兩個,一個是Intent,intent中可以攜帶傳遞的數據;另一個是int型的請求碼Code,請求碼可以自己定義。

請求碼的作用:為了區分啟動不同的Intent,或者傳遞不同的數據使用,作為一種不同啟動的標識。比如A有兩個Button都要啟動B,為了區分是哪個Button啟動的B,我們就要設置兩個不同的請求碼來區分。

這個方法是啟動B的啟動方法,調用之后會跳轉到界面B,並傳遞相應的數值。同時,對於具體Intent傳遞的數值,可以使用接下來講解的onActivityResult()方法來傳遞,這樣啟動方法和數據操作方法分開寫,會更好。

 

2.B中的setResult方法。

setResult()方法有兩個,一個是只含有int型參數ResultCode,另一個是可以傳遞Intent的,分別為,如圖:

 

 

 

使用方法就是獲取當前Activity作為對象,並調用該方法,然后再執行finish()方法,結束當前界面就可以。

當調用setResult方法之后,A界面就已經收到了發送的數據。

 

3.onActivityResult()方法的使用:

參數類型如圖:

 

 

 

三個參數分別為int型 requestCode, int型 resultCode,  Intent型 data。

第一個是請求碼,可以進行傳遞數據前的一些操作,比如根據不同的請求碼,設置不同的傳遞內容。

第二個是返回碼,也就是在B中設置的int的數值,這個是得到返回的內容的標識。

第三個是Intent的數據,比如在B中的setResult方法中傳遞了一些數據,在A中就可以通過解析Intent的內容來獲得傳遞過來的數據。

對於具體的寫法,可以按照下圖的方式構造:

 

 

 

 


————————————————
版權聲明:本文為CSDN博主「hacker_crazy」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/hacker_crazy/article/details/78345450


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM