假設有2個Activity,分別為 ActivityA和 ActivityB, ActivityA負責調用 ActivityB。
(壹)ActivityA傳遞參數給 ActivityB
ActivityA類的代碼:
Java代碼
Bundle bundle = new Bundle();
bundle.putInt("id", 120);//要傳遞的參數,根據實際要求設置
Intent intent = new Intent(this,ActivityB.class);
intent.putExtras(bundle);
//這裏用startActivityForResult,表明還需要從ActivityB接收返回參數
//其中參數 3 :自己設置的參數,表示調用ActivityB行為的編號,在接收返回參數時候需要使用
startActivityForResult(intent, 3);
(二)ActivityB傳遞參數給 ActivityA
ActivityB的代碼:
Java代碼
//定義返回參數
Intent intent = new Intent();
intent.putExtra("result_value", user.getId().intValue());
//設置返回值
//其中參數 100:自己定義的,表示返回編號
//(不同情況可以有不同的返回編號,讓調用者可以根據不同的返回編號進行不同的處理)
setResult(100, intent);
//執行finish後,即關閉當前ActivityB,且將上面設置的參數進行返回
finish();
(三)ActivityA的中用於接收返回參數的代碼:
Java代碼
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
int resultValue = 0;
//requestCode:對應ActivitA中startActivityForResult(intent, 3);中的3
switch(requestCode){
case 3:
//resultCode:對應ActivitB中setResult(100, intent);中的100
switch(resultCode){
case 100:
resultValue = data.getIntExtra("result_value", -1);
Toast.makeText(this, "返回值["+resultValue+"]", Toast.LENGTH_LONG).show();
break;
default:
Toast.makeText(this, "錯誤返回值["+resultCode+"]", Toast.LENGTH_LONG).show();
}
break;
default:
Toast.makeText(this, "錯誤請求值["+requestCode+"]", Toast.LENGTH_LONG).show();
}
}