(1)首先是activity的簡單跳**
1)、activity的切換一般是通過intent來實現的,intent是乙個activity到達另乙個activity的引路者,它描述了起點(當前activity)和終點(目標activity)。乙個簡單intent實現如下: (個人計較喜歡直接定義的方式 )
intent intent = new intent(); //建立乙個intent物件
intent.setclass(activity1.this, activity2.class); //
描述起點和目標
startactivity(intent); //
開始跳轉
//或者直接使用
intent = (intent) new intent(activity1.this,activity2.class)
2)、通常,我們在activity的切換中,希望把前乙個activity1
的某些資料傳遞給下乙個activity2
。這時,我們可以借助bundle來實現。bundle,相當於資料儲存包,用於存放我們想要轉達的資料。打個比方,intent就像一封郵件,裡面有送信人位址(原始activity),也有收信人位址(目標activity),而bundle就是附件也可看做是信件內容。下面是它的簡單實現:
a、activity1傳送:
intent intent = newintent();
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裡面的字串
3)、解決了如何傳遞資料問題,那麼下乙個問題是如何接受從目標activity返回的處理結果。這裡有兩種方式,一是在onrestart方法(onrestrart表示重啟activity時激發的事件)裡面接受處理結果,方法實現和activit y2接受從activity1發來的資料處理一樣。另一種方式,是採用應答模式切換。這裡,主要下第二種方式。應答模式切換和普通 的切換不同在於,普通的是有去沒回,應答則是有來有往。**實現也不一樣:1、從activity1切換到activity2:startactivityforresult(intent,0);2、從activity2返回到activity1:setresult(result_ok, intent)。3、接受返回結果:protected void onactivityresult()。具體**如下;
a、從activity1切換到activity2:
intent intent = newintent();
intent = intent.setclass(activityintent.this, anotheractivity.class
);
bundle bundle = new
bundle();
bundle.putstring(
"string
", et_string.gettext().tostring());
intent.putextras(bundle);
startactivityforresult(intent,
0); //
只有這裡不同 //
activityintent.this.finish();
//不能用finish,會觸發ondestroy();
b、從activity2返回到activity1:
intent intent = newintent();
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的返回結果:
protectedvoid 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的簡單跳 activity的切換一般是通過intent來實現的,intent是乙個activity到達另乙個activity的引路者,它描述了起點 當前activity 和終點 目標activity 乙個簡單intent實現如下 intent intent new inte...