標籤:android 資料
上一節我以“計算男女生標準體重”為例詳細介紹了如何使用Intent、Bundle等實現不同Activity之間資料的傳遞問題,本節將仍以“計算男女生標準體重”為例詳細介紹如何利用startActivityForResult()實現資料的返回,即從第二頁面返回第一頁面。
一、目標
如,使用者在第一個頁面填寫完資料後點擊“計算”按鈕,程式跳轉到第二個頁面,並顯示計算結果。在使用者點擊第二個頁面的“返回計算結果”按鈕後,程式跳回第一個頁面,並顯示第二個頁面的計算結果,注意第一個頁面的變化。
二、思路
1、在第一個頁面(MainActivity.java)中以方法startActivityForResult( )啟動第二個頁面(TwoActivity.java);
private void jump2Activiy2() {Bundle bundle = new Bundle();bundle.putString("strSex", strSex);bundle.putDouble("douHeight", douHeight);Intent intent = new Intent();intent.setClass(MainActivity.this, TwoActivity.class);intent.putExtra("bundle", bundle);startActivityForResult(intent, 0);}
2、在第二個頁面中對要返回的資料進行打包,並以方法setResult( )返回第一個頁面;
private void jump2Activiy1() {Intent intent2 = new Intent();intent2.setClass(TwoActivity.this, MainActivity.class);Bundle bundle2 = new Bundle();bundle2.putString("strResult", strResult);intent2.putExtra("bundle2", bundle2);setResult(0, intent2);TwoActivity.this.finish();}
3、在第一個頁面中複寫onActivityResult( )方法,用於擷取和處理第二頁面返回的資料,更新頁面。
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (0 == requestCode) {if (0 == resultCode) {Bundle bundle2 = data.getBundleExtra("bundle2");String strFromAct2 = bundle2.getString("strResult");txtFromAct2.setText(strFromAct2);}}super.onActivityResult(requestCode, resultCode, data);}
三、討論
利用Intent和Bundle實現不同Activity之間資料的傳遞,此種方法雖然簡單易懂,但是總感覺與MVC思想有所背離,最好是能將頁面和資料分開,通過更改資料來調整頁面,而不是讓資料在兩個Activity之間“拋過來,拋過去”,或許Fragment的誕生有此種考慮也未可知。
以上謹代表個人意見,拋磚引玉,代碼有寫作不規範的地方,接受走過的路過的直接拍磚斧正。
源碼下載http://download.csdn.net/detail/liyongliang_2012/7556133 檔案名稱:HelloAndroid20140627.rar