在一個父Activity經過intent跳轉至多個不一樣子Activity上去,當子模塊的代碼執行完畢後再次返回父頁面,將子activity中獲得的數據顯示在主界面/完成的數據交給父Activity處理。這種帶數據的intent跳轉須要使用activity的onActivityResult()方法。url
(1)startActivityForResult(Intent intent, int requestCode);.net
第一個參數:一個Intent對象,用於攜帶將跳轉至下一個界面中使用的數據,使用putExtra(A,B)方法,此處存儲的數據類型特別多,基本類型所有支持。對象
第二個參數:若是> = 0,當Activity結束時requestCode將歸還在onActivityResult()中。以便肯定返回的數據是從哪一個Activity中返回,用來標識目標activity。blog
所以,若是想要標識返回值是從哪一個頁面返回的,就要給每一個頁面的requestCode設置爲不一樣的值;get
(2)onActivityResult(int requestCode, int resultCode, Intent data)it
第一個參數:這個整數requestCode用於與startActivityForResult中的requestCode中值進行比較判斷,是以便確認返回的數據是從哪一個Activity返回的。io
第二個參數:這整數resultCode是由子Activity經過其setResult()方法返回。用於標識從requestCode所標識的頁面返回的數據的返回值;class
第三個參數:一個Intent對象,帶有返回的數據。能夠經過data.getXxxExtra( );方法來獲取指定數據類型的數據;request
一個頁面可能有不一樣的返回值,經過resultCode區分頁面的返回值,相似於請求url能夠獲取到不一樣的返回值;而requestCode則表示確實是從你請求的頁面返回的結果;分頁
在判斷時,可根據實際需求進行判斷,能夠先判斷resultCode,也能夠先判斷requestCode
(3)setResult(int resultCode, Intent data)
在intent跳轉的目的地界面調用這個方法把Activity想要返回的數據返回到主Activity,即子activity頁面
第一個參數:當Activity結束時resultCode將歸還在onActivityResult()中,用於雙方協定返回碼;
第二個參數:一個Intent對象,返回給主Activity的數據。在intent對象攜帶了要返回的數據,使用putExtra( )方法。即該resultCode所攜帶的數據;
注意:
1. 一個頁面最多隻能有一個onActivityResult(),由於這個是拿到結果的地方;根據不一樣頁面(requestCode )返回的不一樣結果(resultCode)來獲取想要的結果;
2. 一個頁面能夠有多個startActivityForResult(), 由於能夠從一個頁面的不一樣組件跳轉至不一樣的頁面;startActivityForResult()實際就是啓動intent跳轉,所以不須要另外使用別的跳轉;
3. 一個頁面最多能夠有多個setResult(), 由於這個是返回碼和返回值,能夠有多個返回碼和返回值;該頁面的intent跳轉不須要傳入要返回到哪一個頁面;
4. setResult()後面須要調用finish()結束當前的activity;