有的时候,我们需要用A activity传递一些数据去B activity,然后在B activity执行完成之后,将一些结果再返回给A activity,这时startActivityForResult这个方法就派上用场了,具体使用方法如下:
首先在A activity使用此方法开启B activity:
Intent intent = new Intent(A.this, B.class);
intent.putExtra(name, value);
startActivityForResult(intent, requestCode);
说明:
requestCode只要大于等于0即可,留着后面用
在B activity接收数据,执行完成后返回A activity用下面的方法:
Intent intent = new Intent(B.this, A.class);
intent.putExtra(name, value);
setResult(resultCode, intent);
B.this.finish();
说明:
setResult方法我理解就是相当于设置一个执行结果
参数resultCode:要求大于等于0,注意这个和A activity的那个requestCode是两码事,可以不一样的
B.this.finish();:结束B activity,结果就自己传回去了,在A activity等着接收并做进一步的处理就好了
A activity的接收函数:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
}
说明:
requestCode:就是之前A activity传给B activity时候的那个东东
resultCode:是B activity中setResult中的那个东东(个人觉得这个用的比requestCode要多)
可以用上面这两个参数判断是什么时候传过去的数据,又是哪个activity中哪个Intent传回的。
data:是一个Intent,用来接收数据什么的