Activity數據返回 startActivityForResult()用法詳解

1、目標

以下圖,用戶在第一個頁面填寫完數據後點擊「計算」按鈕,程序跳轉到第二個頁面,並顯示計算結果。在用戶點擊第二個頁面的「返回計算結果」按鈕後,程序跳轉回第一個頁面,並顯示第二個頁面的計算結果,注意第一個頁面的變化。html

  

2、思路

一、在第一個頁面(MainActivity.java)中以方法startActivityForResult( )啓動第二個頁面(TwoActivity.java);java

view sourceprint?ide

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( )返回第一個頁面;

view sourceprint?

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( )方法,用於獲取和處理第二頁面返回的數據,更新頁面。

view sourceprint?

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.}


3、討論

利用Intent和Bundle實現不一樣Activity之間數據的傳遞,此種方法雖然簡單易懂,可是總感受與MVC思想有所背離,最好是能將頁面和數據分開,經過更改數據來調整頁面,而不是讓數據在兩個Activity之間「拋過來,拋過去」,或許Fragment的誕生有此種考慮也未可知。

以上謹表明我的意見,拋磚引玉,代碼有寫做不規範的地方,接受走過的路過的直接拍磚斧正。

源碼下載http://download.csdn.net/detail/liyongliang_2012/7556133 文件名:HelloAndroid20140627.rar

相關文章
相關標籤/搜索