轉發自: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