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的第一個參數與第二個參數搞混淆了,一個是請求標記,一個是返回標記。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章