Android實(shí)現(xiàn)Activities之間進(jìn)行數(shù)據(jù)傳遞的方法
本文實(shí)例講述了Android實(shí)現(xiàn)Activities之間進(jìn)行數(shù)據(jù)傳遞的方法。分享給大家供大家參考。具體分析如下:
首先,先說(shuō)明一下Activity的啟動(dòng)及關(guān)閉:
1. startActivity(Intent intent); 啟動(dòng)Activity
finish(); 結(jié)束當(dāng)前Activity
2. startActivityForResult(Intent intent, int requestCode); 以指定的請(qǐng)求碼requestCode啟動(dòng)Activity
finishAcitivity(int requestCode); 結(jié)束以startActivityForResult(Intent intent, int requestCode)方法啟動(dòng)的Activity
假如有多個(gè)Activity,那么我們要關(guān)閉其中一個(gè),那么就可以設(shè)置requestCode,來(lái)關(guān)閉相對(duì)應(yīng)的Activity。
接著,我們來(lái)講數(shù)據(jù)傳遞。問(wèn)題是這樣的:假如我們從頁(yè)面A到頁(yè)面B,A中有一些數(shù)據(jù),比如用戶(hù)信息(用戶(hù)名,賬號(hào),密碼等),從A中進(jìn)入到頁(yè)面B,在B中我們要獲取這些數(shù)據(jù)信息,要怎么進(jìn)行傳遞呢?
Intent提供了各種方法來(lái)攜帶額外的數(shù)據(jù)信息:
putExtras(Bundle data):向Intent中放入藥攜帶的數(shù)據(jù)包
Bundle getExtras():取出Intent中攜帶的數(shù)據(jù)包,得到的是一個(gè)Bundle對(duì)象
putExtra(String name, Xxx value):向Intent中按照鍵值對(duì)key-value形式存入數(shù)據(jù)信息
getXxx(String name):從Intent中按照key獲取相對(duì)應(yīng)的數(shù)據(jù)信息
putXxx(String key, Xxx data):向Bundle中放入Xxx類(lèi)型的數(shù)據(jù)信息
getXxx(String key):從Bundle中獲取key對(duì)應(yīng)的數(shù)據(jù)信息
putSerializable(String key, Serializable data):向Bundle中放入一個(gè)可以序列化的對(duì)象
getSerializable(String key, Serializable data):從Bundle中取出一個(gè)可以序列化的對(duì)象
有了以上的這些方法我們就可以進(jìn)行數(shù)據(jù)傳遞了:
方法如下:
1. 在頁(yè)面A中點(diǎn)擊按鈕bn,跳轉(zhuǎn)到頁(yè)面B代碼如下:
int requestCode = 0; bn.setOnClickListener(new OnClickListener()) { @Override public void onClick(View source) { Intent intent= new(A.this, B.class); startActivityForResult(intent, inquestCode); //打開(kāi)指定的Activity B,并等待返回的結(jié)果, //其中inquestCode是請(qǐng)求碼 } }
2. 在B頁(yè)面中添加數(shù)據(jù),代碼如下:
Intent intent = getIntent(); //獲取當(dāng)前啟動(dòng)的Acitivity B所對(duì)應(yīng)的Intent intent.putExtra("數(shù)據(jù)內(nèi)容","我是李明"); //向Intent中綁定數(shù)據(jù)信息"我是李明" B.this.setResult(1, intent); //設(shè)置結(jié)果碼,并設(shè)置結(jié)束之后退回的Activity B.this.finish();
3. 在A中獲取數(shù)據(jù)信息,代碼如下:
在頁(yè)面A中,為了獲取B中返回的結(jié)果,我們應(yīng)該重寫(xiě)A頁(yè)面中的onActivityResult()方法,當(dāng)B返回結(jié)果時(shí),這個(gè)方法將會(huì)被調(diào)用:
String myData; @override public void onAcitivityResult(int requestCode,int resultCode,Intent intent) //重寫(xiě)該方法以回調(diào)方式來(lái)獲取B返回的結(jié)果 { if(requestCode==0&&resultCode==1) { Bundle data = intent.getExtras(); String myResultData = data.getString("數(shù)據(jù)內(nèi)容"); //這樣myResultData就是我們要從B中傳遞過(guò)來(lái)的數(shù)據(jù)信息了 } }
總結(jié),通過(guò)使用Intent中的方法我們可以實(shí)現(xiàn)不同Activity之間的數(shù)據(jù)傳遞,通過(guò)設(shè)置標(biāo)識(shí)碼和結(jié)果碼,我們可以有選擇的打開(kāi)關(guān)閉不同的Activity,這就是Activity之間的數(shù)據(jù)傳遞。
希望本文所述對(duì)大家的Android程序設(shè)計(jì)有所幫助。
相關(guān)文章
Android 應(yīng)用的歡迎界面實(shí)現(xiàn)代碼
本文主要介紹Android 應(yīng)用歡迎界面的開(kāi)發(fā),這里提供實(shí)現(xiàn)方法和實(shí)現(xiàn)代碼以供大家參考,有需要的朋友可以參考下2016-07-07Android端“被擠下線(xiàn)”功能的單點(diǎn)登錄實(shí)現(xiàn)
本篇文章主要介紹了Android端“被擠下線(xiàn)”功能的單點(diǎn)登錄實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11Android 7.0中新簽名對(duì)多渠道打包的影響詳解
這篇文章主要介紹了Android 7.0中新簽名對(duì)多渠道打包的影響,文中介紹的很詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-02-02Android Studio 視頻播放失敗 start called in state1 異常怎么解決
很多朋友問(wèn)小編在使用MediaPlayer播放音頻時(shí)報(bào)出 E/MediaPlayerNative: start called in state 1, mPlayer(0x0)問(wèn)題,該如何處理呢,今天小編給大家?guī)?lái)了Android Studio 視頻播放失敗 start called in state1 異常問(wèn)題,需要的朋友可以參考下2020-03-03Android實(shí)現(xiàn) EditText輸入手機(jī)號(hào)空格功能
這篇文章主要介紹了Android實(shí)現(xiàn) EditText輸入手機(jī)號(hào)空格功能,實(shí)現(xiàn)思路是要重寫(xiě)TextWatcher,每次EditText內(nèi)容變化,都判斷內(nèi)容是否符合要求,具體實(shí)例代碼大家參考下本文2018-02-02Android ContentProvider實(shí)現(xiàn)獲取手機(jī)聯(lián)系人功能
這篇文章主要為大家詳細(xì)介紹了Android ContentProvider實(shí)現(xiàn)獲取手機(jī)聯(lián)系人功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07