1. 程式人生 > >Android中不同Activity之間的資料傳遞

Android中不同Activity之間的資料傳遞

需要用到的類及方法:

類似:兩個國家做貿易,交易貨物;

--傳遞載體intent(貨船)
--需要傳遞的內容bundle(集裝箱)包裝的string(某控制元件的值)<bundle是以鍵值對的形式儲存資料的>
--對接方法onActivityResult(海關):需要驗證requestCode(請求密碼)和resultCode(返回密碼),接收返回的intent2;

--Acitivity1(國家1)startActivityForResult(intent1,requestCode)方法,啟動下一個Activity,提供requestCode,並將儲存資料的intent1傳遞給Activity2

--Activity2(國家2)setResult(resultCode,intent2),返回承載資料的intent2,並提供resultCode

傳遞過程:

第一步,從Activity1傳遞引數到介面Activity2:

Bundle bundle1 = new Bundle();		//製造集裝箱1用來裝資料
bundle1.putString("KEY",string1);		//將資料1放入集裝箱1

Intent intent1 = new Intent();			//建造貨船用於存放集裝箱
intent1.setClass(this,Activity2.class); //設定貨船的目的地--Activity2
intent.putExtra("BUNDLE_NAME",bundle1); //將集裝箱放進貨船
startActivityForResult(intent1,119);	//貨船出發,帶著密碼1開往目的地
<將上面一段程式碼寫在某跳轉事件裡,執行後即可跳轉到Activity2,並把資料string1帶過去>

第二步,在Activity2中取得傳遞過來的資料:

Bundle bundle = getIntent().getBundleExtra("BUNDLE_NAME");	//從貨船intent上拿到集裝箱
String str = bundle.getString("KEY");						//從集裝箱裡拿到資料
第三步,將Activity2中的資料傳出到Activity1“海關”
Bundle bundle2 = new Bundle();		//製造集裝箱2用來裝資料
bundle2.putString("KEY2",string2);		//將資料2放入集裝箱2

Intent intent2 = new Intent();			//建造貨船用於存放集裝箱
intent.putExtra("BUNDLE_NAME2",bundle2); //將集裝箱放進貨船
setResult(911,intent2);					//貨船出發,帶著密碼2開往目的地
第四步:Activity1從自己的“海關”根據密碼1和密碼2取得資料
//在Activity1中建立海關(覆寫onActivityResult方法),
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	super.onActivityResult(requestCode, resultCode, data);

	Bundle bundle = data.getBundleExtra("BUNDLE_NAME2");
	String str2 = bundle.getString("KEY2");
	if (requestCode == 119 && resultCode == 911) {
		//處理str2資料;
	}
}