Android實現Activities之間進行資料傳遞的方法_Android

來源:互聯網
上載者:User

本文執行個體講述了Android實現Activities之間進行資料傳遞的方法。分享給大家供大家參考。具體分析如下:

首先,先說明一下Activity的啟動及關閉:

1. startActivity(Intent intent);  啟動Activity
       finish();  結束當前Activity
2. startActivityForResult(Intent intent, int requestCode);  以指定的請求碼requestCode啟動Activity
finishAcitivity(int requestCode);  結束以startActivityForResult(Intent intent, int requestCode)方法啟動的Activity
假如有多個Activity,那麼我們要關閉其中一個,那麼就可以設定requestCode,來關閉相對應的Activity。

接著,我們來講資料傳遞。問題是這樣的:假如我們從頁面A到頁面B,A中有一些資料,比如使用者資訊(使用者名稱,帳號,密碼等),從A中進入到頁面B,在B中我們要擷取這些資料資訊,要怎麼進行傳遞呢?

Intent提供了各種方法來攜帶額外的資料資訊:

putExtras(Bundle data):向Intent中放入藥攜帶的資料包
Bundle getExtras():取出Intent中攜帶的資料包,得到的是一個Bundle對象
putExtra(String name, Xxx value):向Intent中按照索引值對key-value形式存入資料資訊
getXxx(String name):從Intent中按照key擷取相對應的資料資訊
putXxx(String key, Xxx data):向Bundle中放入Xxx類型的資料資訊
getXxx(String key):從Bundle中擷取key對應的資料資訊
putSerializable(String key, Serializable data):向Bundle中放入一個可以序列化的對象
getSerializable(String key, Serializable data):從Bundle中取出一個可以序列化的對象

有了以上的這些方法我們就可以進行資料傳遞了:
方法如下:

1. 在頁面A中點擊按鈕bn,跳轉到頁面B代碼如下:

int requestCode = 0;bn.setOnClickListener(new OnClickListener()){ @Override  public void onClick(View source) {  Intent intent= new(A.this, B.class);  startActivityForResult(intent, inquestCode);  //開啟指定的Activity B,並等待返回的結果,  //其中inquestCode是請求碼  }}

2. 在B頁面中添加資料,代碼如下:

Intent intent = getIntent();//擷取當前啟動的Acitivity B所對應的Intentintent.putExtra("資料內容","我是李明");//向Intent中綁定資料資訊"我是李明"B.this.setResult(1, intent);//設定結果碼,並設定結束之後退回的ActivityB.this.finish();

3. 在A中擷取資料資訊,代碼如下:

在頁面A中,為了擷取B中返回的結果,我們應該重寫A頁面中的onActivityResult()方法,當B返回結果時,這個方法將會被調用:

String myData;@overridepublic void onAcitivityResult(int requestCode,int resultCode,Intent intent)//重寫該方法以回調方式來擷取B返回的結果{  if(requestCode==0&&resultCode==1)  {    Bundle data = intent.getExtras();    String myResultData = data.getString("資料內容");    //這樣myResultData就是我們要從B中傳遞過來的資料資訊了  }}

總結,通過使用Intent中的方法我們可以實現不同Activity之間的資料傳遞,通過設定標識碼和結果碼,我們可以有選擇的開啟關閉不同的Activity,這就是Activity之間的資料傳遞。

希望本文所述對大家的Android程式設計有所協助。

相關文章

聯繫我們

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