(转载)Android进阶2之Activity之间数据交流(onActivityResult的用法)
轉(zhuǎn)載自? http://www.blogjava.net/mixer-a/archive/2012/03/23/375014.html
主要功能:
在一個主界面(主Activity)上能連接往許多不同子功能模塊(子Activity上去),當(dāng)子模塊的事情做完之后就回到主界面,或許還同時返回一些子模塊完成的數(shù)據(jù)交給主Activity處理。這樣的數(shù)據(jù)交流就要用到回調(diào)函數(shù)onActivityResult。
<1>startActivityForResult(Intent?intent, int requestCode);
第一個參數(shù):一個Intent對象
第二個參數(shù):如果> = 0,當(dāng)Activity結(jié)束時requestCode將歸還在onActivityResult()中。以便確定返回的數(shù)據(jù)是從哪個Activity中返回
<2>onActivityResult(int requestCode, int resultCode,?Intent?data)
第一個參數(shù):這個整數(shù)requestCode提供給onActivityResult,是以便確認(rèn)返回的數(shù)據(jù)是從哪個Activity返回的。
? ? ? ? ? ? 這個requestCode和startActivityForResult中的requestCode相對應(yīng)。
第二個參數(shù):這整數(shù)resultCode是由子Activity通過其setResult()方法返回。
第三個參數(shù):一個Intent對象,帶有返回的數(shù)據(jù)。
<3>setResult(int resultCode,?Intent?data)
調(diào)用這個方法把Activity想要返回的數(shù)據(jù)返回到父Activity
第一個參數(shù):當(dāng)Activity結(jié)束時resultCode將歸還在onActivityResult()中,一般為RESULT_CANCELED , RESULT_OK。
第二個參數(shù):一個Intent對象,返回給父Activity的數(shù)據(jù)。
?
?
? ??? ?
? ?
?
?
本實(shí)例一共有三個Activity。點(diǎn)擊飛往火星跳轉(zhuǎn)到otherActivity,把地球帶給火星的消息顯示在otherActivity中。點(diǎn)擊返回地球時把火星帶給地球的消息傳到主Activity.
同理:
點(diǎn)擊飛往月球跳轉(zhuǎn)到thirdActivity,把地球帶給月球的消息顯示在thirdActivity中。點(diǎn)擊返回地球時把月球帶給地球的消息傳到主Activity.
?
具體實(shí)現(xiàn):
主Activity:
otherActivity:
thirdActivity:
?
?
?
轉(zhuǎn)載自?? http://www.2cto.com/kf/201205/133027.html
?
androidActivity之間的跳轉(zhuǎn)不只是有startActivity(Intent i)的,startActivityForResult(Intent intent, int requestCode)也是常用的方法。
?? 其作用是可以用onActivityResult(int requestCode, int resultCode, Intent data)方法獲得請求Activity結(jié)束之后的操作。 ?? 需要注意三個方法:startActivityForResult(Intent intent, int requestCode),onActivityResult(int requestCode, int resultCode, Intent data),setResult(int resultCode, Intent data)
例如如下代碼:從From跳轉(zhuǎn)至ToB和ToC From: if(條件){ Intent intent = new Intent(this, ToB.class); startActivityForResult(serverIntent, REQUEST_CODE_01);//跳轉(zhuǎn)至ToB }else{ Intent intent = new Intent(this, ToC.class); startActivityForResult(serverIntent, REQUEST_CODE_02);//跳轉(zhuǎn)至ToC } ? public void onActivityResult(int requestCode, int resultCode, Intent data){ ????????? switch (requestCode) { case REQUEST_CODE_01: ??????????????????????? if(resultCode==Activity.RESULT_OK) ??????????????????????? //do something ??????????????????????? break; ??????????????? case REQUEST_CODE_02: //do something ??????????????????????? break; } } ? ? ??? 這里說說startActivityForResult(Intent intent, int requestCode)的參數(shù),第一個Intent不用說了,需要注意的是第二個,我們用的是REQUEST_CODE_01和REQUEST_CODE_02,其實(shí)這個是我們自己定義的一個int型常量,用于標(biāo)記的,具體作用可在onActivityResult方法里看到,用于判斷是從哪個Activity返回的。 ? ToB: Intent intent = new Intent(); intent.putExtra(key, value); setResult(Activity.RESULT_OK, intent); finish();//結(jié)束之后會將結(jié)果傳回From ? ToC: Intent intent = new Intent(); intent.putExtra(key, value); setResult(Activity.RESULT_OK, intent); finish();//結(jié)束之后會將結(jié)果傳回From ? ?? setResult的第一個參數(shù)對應(yīng)上面onActivityResult的第二個參數(shù),注意別把onActivityResult的第一個參數(shù)與第二個參數(shù)搞混淆了,一個是請求標(biāo)記,一個是返回標(biāo)記。 ? 歡迎補(bǔ)充~~~
轉(zhuǎn)載于:https://www.cnblogs.com/zqq965774513/p/3571007.html
總結(jié)
以上是生活随笔為你收集整理的(转载)Android进阶2之Activity之间数据交流(onActivityResult的用法)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Wowza Media Server媒体
- 下一篇: Servlet/jsp和Action/j