Android Activity之間的數據傳遞【轉載】

 
一、向目標Activity【Main2Activity】傳遞數據:java

Intent intent=new Intent(this,Main2Activity.class);
//可傳遞多種類型的數據
intent.putExtra("name","張三");
intent.putExtra("age",12);
startActivity(intent);

 
二、在目標Activity【Main2Activity】中取出數據微信

Intent intent=getIntent();
//用getXxxExtra()取出對應類型的數據。取出String只須要指定key
String name=intent.getStringExtra("name");
//取出int要指定key,還要設置默認值,當intent中沒有該key對應的value時,返回設置的默認值
int age=intent.getIntExtra("age",0);

 
 
 
 


在目標Activity【Main2Acitivity】銷燬時,想讓它能夠回傳數據給上一個Activity,這樣須要改寫前面的代碼:
一、設置一個請求碼標識當前Activity,讓它跳轉到目標Activity【Main2Activity】,ide

Intent intent=new Intent(this,Main2Activity.class);
//startActivityForResult()方法能夠啓動一個Activity,並能夠設置一個int型的請求碼標識當前Activity
startActivityForResult(intent,1);

 
二、在目標Activity【Main2Activity】中回傳數據this

//回傳數據用得Intent能夠新建,也能夠用getIntent()
Intent intent=new Intent();
//設置要回傳的數據
intent.putExtra("name","張三");
intent.putExtra("age",18);
//設置結果碼標識當前Activity,回傳數據。無論多早調用這句代碼,這句代碼在當前Activity銷燬時纔會執行,即此Activity銷燬時纔會回傳數據。請求碼和結果碼沒必要相同。
setResult(1,intent);

回傳時會把請求碼、結果碼、Intent數據封裝爲一個總體回傳,請求碼+結果碼惟一標識回傳的Intent
 
三、在上一級Activity中取出回傳的數據
上一級Activity使用   startActivityForResult()  開啓目標Activity後,當目標Activity銷燬時,會向上一級Activity回傳數據,並回調上一級  Activity的   onActivityResult()   方法。
咱們須要重寫上一級Activity的   onActivityResult()   方法獲取回傳數據。code

//重寫上一級Activity的onActivityResult()方法來獲取目標Activity回傳的數據
//三個形參,請求碼、結果碼、目標Activity回傳的Intent
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    //調用基類的方法,此句代碼會自動生成
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode==1){   //若是請求碼是當前Activity的
                       if(resultCode==1){    //若是結果碼是某個目標Activity的,就取出對應的數據。這個判斷主要是可能有多個目標Activity向當前Activity回傳數據,這些Intent數據中可能具備相同的key
                                         String name=data.getStringExtra("name");
                                         int age=data.getIntExtra("age",0);
                                        }
                      }
}

 
如過上一級Activity開啓了多個目標Activity,回傳數據時都是回調onActivityResult()方法,因此經常要根據結果碼區分是哪一個目標Activity回傳的數據。若是隻開啓了一個目標Activity,則沒必要判斷。
 
數據回傳很經常使用,好比發微信朋友圈時,進入相冊選擇好圖片後,會回傳選擇的圖片的信息。
 圖片

相關文章
相關標籤/搜索