邏輯步驟:
1. startActivityForResult(Intent intent,int i); 啟動下壹個Activity要傳送到下壹個Activity的數據封裝到intent中,並規定下壹個Activity必須返回壹個值i;
2. 運行下壹個Activity,並返回int i;
3 onActivityResult(int requestCode,int ResultCode,Intent data) 返回的i值此處傳給requestCode,且只有當requestCode接受到的值是規定的i時此方法才能正確執行。
通俗理解:
startActivityForResult(Intent,int)啟動下壹個Activity且規定下壹個Activity應該返回壹個值; 下壹個Activity執行; 下壹個Activity執行完,返回的值是規定的值時onActivityResult方法才能正確執行。
下面來壹個例子:
主調函數通過下面的代碼調用Activity和發送數據:
// 用Bundle來綁定所要的數據 Bundle bd = new Bundle();
bd.putDouble("height", height); bd.putString("sex", sex);
// 創建壹個新的Intent,並將Bundle傳進去
Intent it = new Intent(); it.putExtras(bd);
it.setClass(ActivityDemo.this, Bundle2.class);
startActivityForResult(it, RESULT_OK);
主調函數通過onActivityResult回調傳回數據:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (resultCode) {
case RESULT_OK:
String sex = data.getStringExtra("sex");
if(sex.equals("M")){
rg.check(R.id.M);
}else {
rg.check(R.id.F);
}
break;
default:
break;
}
}
被調函數通過下面代碼返回數據:
intent=this.getIntent();
bunde = intent.getExtras();
String sex = bundle.getString("sex");
Double height = bundle.getDouble("height");
Bundle2.this.setResult(RESULT_OK,intent);
Bundle2.this.finish();