Android 使用intent傳遞返回值:startActivityForResult()與onActivityResult()與setResult()參數分析,activity帶參數的返回

在一個父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;

相關文章
相關標籤/搜索