Intent資料傳遞

2021-06-28 09:44:16 字數 2683 閱讀 7685

(1)首先是activity的簡單跳**

activity的切換一般是通過intent來實現的,intent是乙個activity到達另乙個activity的引路者,它描述了起點(當前activity)和終點(目標activity)。乙個簡單intent實現如下: 

intent intent = new intent(); 

//建立乙個intent物件 

intent.setclass(activity1.this, activity2.class); 

//描述起點和目標 

startactivity(intent); 

//開始跳轉 

(2)通常,我們在activity的切換中,希望把前乙個activity的某些資料傳遞給下乙個activity。這時,我們可以借助bundle來實現。bundle,相當於資料儲存包,用於存放我們想要轉達的資料。打個比方,intent就像一封郵件,裡面有送信人位址(原始activity),也有收信人位址(目標activity),而bundle就是附件也可看做是信件內容。下面是它的簡單實現:

a、activity1傳送: 

intent intent = new intent(); 

intent.setclass(activity1.this, activity2.class); 

//描述起點和目標 

bundle bundle = new bundle(); 

//建立bundle物件 

bundle.putstring("something", "activity1發來的資料"); 

//裝入資料 

intent.putextras(bundle); 

//把bundle塞入intent裡面 

startactivity(intent); 

//開始切換 

b、activity2接受從activity1發來的資料:

intent intent = this.getintent(); 

//獲取已有的intent物件 

bundle bundle = intent.getextras(); 

//獲取intent裡面的bundle物件 

string = bundle.getstring("something"); 

//獲取bundle裡面的字串 

a、從activity1切換到activity2: 

intent intent = new intent(); 

intent = intent.setclass(activityintent.this, anotheractivity.class); 

bundle bundle = new bundle(); 

bundle.putstring("string", et_string.gettext().tostring()); 

intent.putextras(bundle); 

startactivityforresult(intent,0); 

//只有這裡不同 

//不能用finish,會觸發ondestroy(); 

b、從activity2返回到activity1:

intent intent = new intent(); 

intent = intent.setclass(anotheractivity.this, activityintent.class); 

bundle bundle = new bundle(); 

bundle.putint("result", "activity2的處理結果"); 

intent.putextras(bundle); 

anotheractivity.this.setresult(result_ok, intent); 

//result_ok是返回狀態碼 

anotheractivity.this.finish(); //會觸發ondestroy(); 

c、activity1接受activity2的返回結果: 

protected void onactivityresult(int requestcode, int resultcode, intent data)  

}  (4)、從activity2中返回到activity1(在activity1切換到activity2時,呼叫了finish方法),你會發現你在activity1以前的資料全沒了,簡單的說就是資料被沒有保留下來。因為finish方法,會觸發ondestroy(),使得activity1銷毀。下一次再來到activity1時,是全新的activity1,以往的資料當然不在。如果想保留切換前的狀態,可以採用兩種方式:1、切換時,不呼叫finish()方法。2、採用sharedpreferences來儲存資料。sharedpreferences 是乙個輕量級儲存類,主要用於儲存一些窗體的狀態,如文字框值、按鈕狀態等等,類似於session。一般在onpause()方法裡面儲存資料,在onresume()裡面提取資料。實現如下:

a、儲存資料 

//暫停:onstart()->onresume()->onpause() 

@override 

protected void onpause()  

b、提取資料 

//重啟:onstart()->onresume() 

@override 

protected void onresume()  

Intent資料傳遞

1 首先是activity的簡單跳 activity的切換一般是通過intent來實現的,intent是乙個activity到達另乙個activity的引路者,它描述了起點 當前activity 和終點 目標activity 乙個簡單intent實現如下 intent intent new inte...

Intent資料傳遞

1 首先是activity的簡單跳 activity的切換一般是通過intent來實現的,intent是乙個activity到達另乙個activity的引路者,它描述了起點 當前activity 和終點 目標activity 乙個簡單intent實現如下 intent intent new inte...

Intent資料傳遞

1 首先是activity的簡單跳 1 activity的切換一般是通過intent來實現的,intent是乙個activity到達另乙個activity的引路者,它描述了起點 當前activity 和終點 目標activity 乙個簡單intent實現如下 個人計較喜歡直接定義的方式 intent...