Activity之间的数据传递和回传

来源:互联网 发布:淘宝衣服平面拍照片 编辑:程序博客网 时间:2024/06/06 11:41

1、

假定需要进行数据传递和回传的两个Activity为A和B,首先由A打开B,并传递一些数据到B。当B打开后,根据从A处获得到的数据,进行不同的业务操作,并在关闭的同时将不同业务操作所造成的不同的结果数据再还给A。

在这里有两个概念:
requestCode:在A调用B的时候所设置的请求编码,用这个编码,A自身在接收到来自B的返回信息时,可以区分要做怎样不同的操作。

resultCode:在关闭B时,B所发送给A的结果编码。A在接收到这个编码后,可根据自身的业务需要做不同的操作。


2、

A中,调用“startActivityForResult()”方法,代替通常的“startActivity()”方法,来打开B

Intent intent = new Intent(this,B.class);this.startActivityForResult(intent, requestCode); 

3、

然后,在A中,实现方法“onActivityResult()”。这个方法是用来接收来自B的返回数据的。在这个方法里,可以根据A发送给B的不同的requestCode来进行不同的业务处理,当然也可以根据B返回给A的不同的resultCode,甚至是B返回给A的在Intent中的业务数据:

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {    // TODO Auto-generated method stub    super.onActivityResult(requestCode, resultCode, data);    //从本activity所打开的新的activity中所返回回来的数据    String result = data.getStringExtra("result");    //根据打开新activity时不同的requestCode,进行不同的处理    switch(requestCode){case 1 : //    break;case 2 : //    break;case 3 : //    break;    }}

4、

 在B中,在调用“finish()”关闭自己之前,调用“setResult()”方法,即可将要还给A的数据传送回去:

Intent newIntent = new Intent(this,A.class);newIntent.putExtra("result", code);//这里可以是任意要传回给A的业务数据this.setResult(resultCode,newIntent);//使用setResult方法,把resuleCode传给Athis.finish();


0 0
原创粉丝点击