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的第一個參數與第二個參數搞混淆了,一個是請求標記,一個是返回標記。