古詩詞大全網 - 成語故事 - 如何在 Activity 之間傳遞參數

如何在 Activity 之間傳遞參數

Activity之間的參數傳遞,我用例子給妳講解吧。

假設有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();

}

}