1. 程式人生 > >Activity帶回調的啟動方式

Activity帶回調的啟動方式

如果ActivityA需要開啟一個新的ActivutiyB 單方面的傳遞資料,可以開啟一個新的意圖 new Intent(); 用putExtra();等方法把要傳遞的資料封裝起來,  利用startActivaty();方法 去開啟一個B, 在B中通過getIntent();方法 來獲取一個Intent 物件

然後通過getXxxx()方法 根據Key 把你傳遞的資料獲取出來

ActvityA 中的程式碼  :

Intent intent = new Intent(this, Activity01.class);
intent.putExtra("SS",num);
startActivity(intent);

ActivityB中的程式碼:

Intent intent = getIntent();  //getIntet();
String num = intent.getStringExtra("SS");

如果需要在ActivityB結束的時候帶返回值傳遞到ActivityA 那麼就需要在A中呼叫 startActivityForResult();方法了

這個方法中有兩個引數requestCode 代表請求碼 是每個請求頁面的標識  另一個是Intent

第二步 在ActivityA 中重寫onActivityResult方法 用於接收 B中返回的資料 這個方法是回撥方法 自動呼叫

第三步 在ActivityB中 呼叫setResult方法 將所要傳遞的資料返回

ActvityA 中的程式碼  :

int requestCode = 1;
Intent intent2 = new Intent(this,Activity01.class);
intent2.putExtra("SS", num);
startActivityForResult(intent2, requestCode);

重寫onActivityResult:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1&&resultCode == 2) {
//Intent intent = getIntent();   // data 本身就是一個 Inten  所以不需要再new了 直接呼叫裡面的方法就行了
String s = data.getStringExtra("AA");

}

ActicityB中程式碼:

int resultCode = 2;
String num1 = ed1.getText().toString();
Intent data = new Intent(); //同調用者一樣 需要一個意圖 把資料封裝起來
data.putExtra("AA", num1);
setResult(resultCode, data);
finish();