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();