startActivityForResult與onActivityResult

androidActivity之間的跳轉不隻是有startActivity(Intent i)的,startActivityForResult(Intent intent, int requestCode)也是常用的方法。

   其作用是可以用onActivityResult(int requestCode, int resultCode, Intent data)方法獲得請求Activity結束之後的操作。
   需要註意三個方法:startActivityForResult(Intent intent, int requestCode),onActivityResult(int requestCode, int resultCode, Intent data),setResult(int resultCode, Intent data)

例如如下代碼:從From跳轉至ToB和ToC
From:
if(條件){
Intent intent = new Intent(this, ToB.class);
startActivityForResult(serverIntent, REQUEST_CODE_01);//跳轉至ToB
}else{
Intent intent = new Intent(this, ToC.class);
startActivityForResult(serverIntent, REQUEST_CODE_02);//跳轉至ToC
}
 
public void onActivityResult(int requestCode, int resultCode, Intent data){
          switch (requestCode) {
case REQUEST_CODE_01:
                        if(resultCode==Activity.RESULT_OK)
                        //do something
                        break;
                case REQUEST_CODE_02:
//do something
                        break;
}
}
 
 
    這裡說說startActivityForResult(Intent intent, int requestCode)的參數,第一個Intent不用說瞭,需要註意的是第二個,我們用的是REQUEST_CODE_01和REQUEST_CODE_02,其實這個是我們自己定義的一個int型常量,用於標記的,具體作用可在onActivityResult方法裡看到,用於判斷是從哪個Activity返回的。
 
ToB:
Intent intent = new Intent();
intent.putExtra(key, value);
setResult(Activity.RESULT_OK, intent);
finish();//結束之後會將結果傳回From
 
ToC:
Intent intent = new Intent();
intent.putExtra(key, value);
setResult(Activity.RESULT_OK, intent);
finish();//結束之後會將結果傳回From
 
   setResult的第一個參數對應上面onActivityResult的第二個參數,註意別把onActivityResult的第一個參數與第二個參數搞混淆瞭,一個是請求標記,一個是返回標記。
 
歡迎補充~~~

 

摘自 TQUDING的專欄

發佈留言