android中使用startActivityForResult回传数据

简介:

假设:我这里有两个Activity:A和B,从A中向B中传递数据的时候采用的是Bundle封装数据,然后从A中跳转到B中,当B有需求将数据封装起来回传给A并跳转回A。那么A中接收数据时还要先判断Bundle是否为空,因为第一次访问A的时候(即B还没有回传的时候),Bundle是为空的,这样显然是比较麻烦的,不明智的做法。

还好startActivityForResult来做跳转给了我们更好的解决办法。

1.跳转的时候不是采用startActivity(intent) 这个方法,而是startActivityForResult(intent, 0)。

复制代码
1  Intent intent = new  Intent();
2  intent.setClass(A. this , B. class );
3  Bundle bundle = new  Bundle();
4  String str1 = " aaaaaa " ;
5  bundle.putString( " str1 " , str1);
6  intent.putExtras(bundle);
7  startActivityForResult(intent,  0 ); // 这里采用startActivityForResult来做跳转,此处的0为一个依据,可以写其他的值,但一定要>=0
复制代码
 
 

2.重写onActivityResult方法,用来接收B回传的数据。

复制代码
1  protected   void  onActivityResult( int  requestCode,  int  resultCode, Intent data) {
2  switch  (resultCode) {  // resultCode为回传的标记,我在B中回传的是RESULT_OK
3      case  RESULT_OK:
4  Bundle b = data.getExtras();  // data为B中回传的Intent
5     String str = b.getString( " str1 " ); // str即为回传的值
6  break ;
7  default :
8  break ;
9  }
10  }
复制代码
 

3.在B中回传数据时采用setResult方法,并且之后要调用finish方法。

setResult(RESULT_OK, intent);  // intent为A传来的带有Bundle的intent,当然也可以自己定义新的Bundle
finish(); // 此处一定要调用finish()方法
 

这样当B中调用finish方法的时候,跳转到A时会自动调用onActivityResult方法,来获取B中回传的intent了。 


本文转自java豆子博客园博客,原文链接:http://www.cnblogs.com/error404/archive/2011/08/22/2149793.html,如需转载请自行联系原作者

相关文章
|
18天前
|
消息中间件 网络协议 Java
Android 开发中实现数据传递:广播和Handler
Android 开发中实现数据传递:广播和Handler
16 1
|
4天前
|
Java Linux API
统计android设备的网络数据使用量
统计android设备的网络数据使用量
14 0
|
1天前
|
Android开发 数据库管理
Android如何在Activity和Service之间传递数据
Android如何在Activity和Service之间传递数据
|
2天前
|
XML JSON API
转Android上基于JSON的数据交互应用
转Android上基于JSON的数据交互应用
|
2天前
|
JSON Android开发 数据格式
android与Web服务器交互时的cookie使用-兼谈大众点评数据获得(原创)
android与Web服务器交互时的cookie使用-兼谈大众点评数据获得(原创)
11 2
|
25天前
|
Android开发 开发者
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
Android's AsyncTask simplifies asynchronous tasks for brief background work, bridging UI and worker threads. It involves execute() for starting tasks, doInBackground() for background execution, publishProgress() for progress updates, and onPostExecute() for returning results to the main thread.
11 0
|
25天前
|
网络协议 安全 API
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
HTTP和HTTPS是网络数据传输协议,HTTP基于TCP/IP,简单快速,HTTPS则是加密的HTTP,确保数据安全。在Android中,过去常用HttpURLConnection和HttpClient,但HttpClient自Android 6.0起被移除。现在推荐使用支持TLS、流式上传下载、超时配置等特性的HttpsURLConnection进行网络请求。
14 0
|
1月前
|
JSON 安全 Java
Android网络部分-----网络数据请求、解析
Android网络部分-----网络数据请求、解析
Android网络部分-----网络数据请求、解析
|
1月前
|
XML Java Android开发
Android每点击一次按钮就添加一条数据
Android每点击一次按钮就添加一条数据
24 1
|
2月前
|
Android开发
Android 数据传递的几种方式,HttpLoggingInterceptor消息拦截器
Android 数据传递的几种方式,HttpLoggingInterceptor消息拦截器
22 6