以下圖,用戶在第一個頁面填寫完數據後點擊「計算」按鈕,程序跳轉到第二個頁面,並顯示計算結果。在用戶點擊第二個頁面的「返回計算結果」按鈕後,程序跳轉回第一個頁面,並顯示第二個頁面的計算結果,注意第一個頁面的變化。html
一、在第一個頁面(MainActivity.java)中以方法startActivityForResult( )啓動第二個頁面(TwoActivity.java);java
01.
private
void
jump2Activiy2() {
this
02.
spa
03.
Bundle bundle =
new
Bundle();
.net
04.
bundle.putString(
"strSex"
, strSex);
code
05.
bundle.putDouble(
"douHeight"
, douHeight);
orm
06.
Intent intent =
new
Intent();
htm
07.
intent.setClass(MainActivity.
this
, TwoActivity.
class
);
get
08.
intent.putExtra(
"bundle"
, bundle);
09.
startActivityForResult(intent,
0
);
10.
}
二、在第二個頁面中對要返回的數據進行打包,並以方法setResult( )返回第一個頁面;
01.
private
void
jump2Activiy1() {
02.
03.
Intent intent2 =
new
Intent();
04.
intent2.setClass(TwoActivity.
this
, MainActivity.
class
);
05.
Bundle bundle2 =
new
Bundle();
06.
bundle2.putString(
"strResult"
, strResult);
07.
intent2.putExtra(
"bundle2"
, bundle2);
08.
setResult(
0
, intent2);
09.
TwoActivity.
this
.finish();
10.
}
三、在第一個頁面中複寫onActivityResult( )方法,用於獲取和處理第二頁面返回的數據,更新頁面。
01.
@Override
02.
protected
void
onActivityResult(
int
requestCode,
int
resultCode, Intent data) {
03.
if
(
0
== requestCode) {
04.
if
(
0
== resultCode) {
05.
06.
Bundle bundle2 = data.getBundleExtra(
"bundle2"
);
07.
String strFromAct2 = bundle2.getString(
"strResult"
);
08.
txtFromAct2.setText(strFromAct2);
09.
}
10.
11.
}
12.
super
.onActivityResult(requestCode, resultCode, data);
13.
}
利用Intent和Bundle實現不一樣Activity之間數據的傳遞,此種方法雖然簡單易懂,可是總感受與MVC思想有所背離,最好是能將頁面和數據分開,經過更改數據來調整頁面,而不是讓數據在兩個Activity之間「拋過來,拋過去」,或許Fragment的誕生有此種考慮也未可知。
以上謹表明我的意見,拋磚引玉,代碼有寫做不規範的地方,接受走過的路過的直接拍磚斧正。
源碼下載http://download.csdn.net/detail/liyongliang_2012/7556133 文件名:HelloAndroid20140627.rar