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中的业务数据:
@Override
protected 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传给A
this.finish();