1. 程式人生 > >Android中startActivity的使用----請求碼與結果碼的意義

Android中startActivity的使用----請求碼與結果碼的意義

在啟動另外一個Activity的時候,有兩種方法,一種是直接使用startActivity,另外一種就是使用startActivityForResult。前一種用來開啟一個activity介面,後面一個用來開啟activity同時接收返回的結果。

1.跳轉的時候不是採用startActivity(intent) 這個方法,而是startActivityForResult(intent, 0)。

複製程式碼 1 Intent intent=new Intent();
2 intent.setClass(A.this, B.class);
3 Bundle bundle=new Bundle();
4 String str1
="aaaaaa";
5 bundle.putString("str1", str1);
6 intent.putExtras(bundle);
7 startActivityForResult(intent, 0);//這裡採用startActivityForResult來做跳轉,此處的0為請求碼 複製程式碼

2.重寫onActivityResult方法,用來接收B回傳的資料。

複製程式碼 1protectedvoid onActivityResult(int requestCode, int resultCode, Intent data) {
2switch (resultCode) { //requestCode為本次請求時的請求碼,
resultCode為返回的結果碼3case RESULT_OK:
4Bundle b=data.getExtras(); //data為B中回傳的Intent5String str=b.getString("str1");//str即為回傳的值6break;
7default:
8break;
9}
10} 複製程式碼

3.在B中回傳資料時採用setResult方法,並且之後要呼叫finish方法。

setResult(RESULT_OK, intent); //intent為A傳來的帶有Bundle的intent,RESULT_OK為返回結果碼finish();//此處一定要呼叫finish()方法,關閉該activity

理解:

1、呼叫startActivityForResult方法可以開啟一個獲取返回值的activity,在第一個activity中重onActivityResult方法來接收返回的值。

2、請求碼:請當同一個activity多次使用startActivityForResult方法獲取返回值後,通過請求碼來區分是那次請求。

3、結果碼:當返回多個結果時,用來區分結果。