Android中不同Activity之間的資料傳遞
阿新 • • 發佈:2019-01-09
需要用到的類及方法:
類似:兩個國家做貿易,交易貨物;
--傳遞載體: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:
<將上面一段程式碼寫在某跳轉事件裡,執行後即可跳轉到Activity2,並把資料string1帶過去>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中取得傳遞過來的資料:
Bundle bundle = getIntent().getBundleExtra("BUNDLE_NAME"); //從貨船intent上拿到集裝箱
String str = bundle.getString("KEY"); //從集裝箱裡拿到資料
第三步,將Activity2中的資料傳出到Activity1“海關”
第四步:Activity1從自己的“海關”根據密碼1和密碼2取得資料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中建立海關(覆寫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資料;
}
}