【資料】Activity資料返回——startActivityForResult()用法詳解

來源:互聯網
上載者:User

標籤: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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.