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