android的Activity之間的資料傳遞

來源:互聯網
上載者:User

首先給大家介紹一下android中的activity:

一個activity一般代表手機螢幕的一屏,概念相當與網頁。一般來說一個android應用是由一個或多個activity組成,activity直接可進行跳轉,直接也可以通過回調方法傳遞參數。

activity之間的參數傳遞:

首先我們建立兩個按鈕,分別在layout1,layout2中,按鈕的id為btn1,btn2,然後在分別建立兩個activity分別為Activity1,Activity2。Activity1分別和layout1關聯,Activity2分別和layout2關聯,我們接下來要做的事情就是在Activity1中把參數傳遞到Activity2中,然後在Activity2運行完成的時候並返回到Activity1的時候,Activity1再從擷取Activity2中參數。

這是Activity1中的代碼:


view sourceprint?01 <P><SPAN> @Override

02     public void onCreate(Bundle savedInstanceState) { 

03         super.onCreate(savedInstanceState); 

04         setTitle("這是activity1"); 

05         setContentView(R.layout.layout1); 

06           

07         //單擊button2 

08         Button btn1 = (Button) findViewById(R.id.btn1); 

09         btn2.setOnClickListener(new Button.OnClickListener() { 

10             @Override

11             public void onClick(View v) { 

12                 Intent intent1 = new Intent(MainActivity.this, Activity3.class); 

13                 intent1.putExtra("activity1", "資料來自activity1"); 

14                 startActivityForResult(intent1, REQUEST_CODE); 

15             } 

16         }); 

17     } </SPAN></P> 

18 <P>成時調用onActivityResult方法</P> 

19 <P><SPAN>    @Override

20     protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

21         if(requestCode == REQUEST_CODE){ 

22             if(resultCode == RESULT_CANCELED){ 

23                 setTitle("取消"); 

24             }else if(resultCode == RESULT_OK){ 

25                 System.out.println("這裡已經執行..."); 

26                 String txt = ""; 

27                 Bundle extras = data.getExtras(); 

28                 if(extras != null){ 

29                     txt = extras.getString("store"); 

30                 } 

31                 setTitle("這裡是</SPAN><SPAN style="FONT-SIZE: 13px; LINE-HEIGHT: 19px; FONT-FAMILY: 'sans serif', tahoma, verdana, helvetica; WHITE-SPACE: normal; BACKGROUND-COLOR: #ffffff">Activity1</SPAN><SPAN>:" + txt); 

32             } 

33         } 

34     }</SPAN></P>

 這是Activity2中的代碼:


view sourceprint?01 <SPAN>@Override

02     protected void onCreate(Bundle savedInstanceState) { 

03         super.onCreate(savedInstanceState); 

04         setTitle("這是activity2"); 

05         setContentView(R.layout.layout2); 

06         Bundle bundle = getIntent().getExtras(); 

07         if(bundle != null){ 

08             setTitle("這裡是Activity2:" + bundle.getString("</SPAN><SPAN style="LINE-HEIGHT: 19px">activity1</SPAN>"));<SPAN>      } 

09           

10         Button btn = (Button) findViewById(R.id.btn2); 

11         btn.setOnClickListener(new Button.OnClickListener() { 

12             @Override

13             public void onClick(View v) { 

14                 Bundle bundle = new Bundle(); 

15                 bundle.putString("store", "這是Activity2中傳遞過來的資料"); 

16                 Intent mIntent = new Intent(); 

17                 mIntent.putExtras(bundle); 

18                 setResult(RESULT_OK, mIntent); 

19                 finish(); 

20             } 

21         }); 

22     }</SPAN>

 首先解釋一下startActivity()和startActivityForResult()這兩種方法的不同:前者是啟動一個新的Activity,當新的Activity執行完成後不會執行回呼函數,

當然也不會有任何的傳回值;後者也是啟動一個新的Activity,並且當新的Activity運行結束的時候,還必須執行舊的Activity裡面的

回呼函數,這個回呼函數叫做onActivityResult(),其中startActivityForResult()裡面有兩個參數,第一個參數是你聲明的

Intent,第二個參數是請求碼,如果請求碼大於0的時候,當新的Activity結束的時候,這個請求碼返回到onActivityResult(),

然後通過不同的請求碼在回呼函數onActivityResult()中針對不同的傳回值執行不同的代碼操作。其中onActivityReuslt()這也是

一個回呼函數,當新的Activity執行完成後,還必須執行舊的Activity的這個回呼函數。

 作者“緣敘的部落格”
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.