在Activity_A中啟動(dòng)Activity_B
實(shí)現(xiàn)Activity_A和Activity_B間的對(duì)話
一、信息僅從Activity_A傳遞到Activity_B
Activity_A.java :
Intent intent = new Intent(Activity_A.this,Activity_B.class);
intent.putExtra(key,value);
startActivity(intent);
將value信息,以鍵-值的形式,附加在Intent對(duì)象上發(fā)送過(guò)去,value可以是任意數(shù)據(jù)。
Activity_B.java :
getIntent().get類(lèi)型Extra(key,defaultValue);
//類(lèi)型表示接收信息的類(lèi)型,比如getStringExtra(...)等
通過(guò)此行代碼返回傳遞過(guò)來(lái)的值,明顯第二個(gè)參數(shù)為默認(rèn)值。
二、Activity_B同時(shí)返回信息到Activity_A
Activity_A.java :
Intent intent = new Intent(Activity_A.this,Activity_B.class);
intent.putExtra(key,value);
startActivityForResult(intent,requestCode);
可以看到,啟動(dòng)Activity_B的方法更改成startActivityForResult(...)。
requestCode表示請(qǐng)求代碼,當(dāng)Activity_A啟動(dòng)多個(gè)不同類(lèi)型的子activity時(shí),用于區(qū)分各消息反饋。
在Activity_A中還需要重寫(xiě)onActivityResult(...)方法,來(lái)獲取Activity_B回傳的值。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data != null) {
value = data.get類(lèi)型Extra(key, defaultValue); // value表示回傳的值
}
}
Activity_B.java :
getIntent().get類(lèi)型Extra(key,defaultValue);
Intent data = new Intent();
data.putExtra(key,value);
setResult(resultCode,data);
可以看出,子activity通過(guò)setResult(...)方法將信息返回給父activity。
更多建議: