一个activity回传数据给前一个activity步骤:
1:第一个activity在点击跳转到第二个页面的点击事件里写startActivityForResult(intent, KEY_MSG);这里我们使用了startActivityForResult()方法来启动Activity,请求码只要是一个唯一值就可以了,这里传入了KEY_MSG,KEY_MSG为到时候接收第二个activity回传过来的数据的requestCode标志。
2:第二个activity用intent设置要传给第一个activity的数据,并调用setResult进行传递mIntent.putParcelableArrayListExtra( KEY_MSG_DATA, "HelloFirstActivity");
setResult(RESULT_OK, mIntent);
setResult()方法接收两个参数,第一个参数用于向上一个活动返回处理结果,一般只使用RESULT_OK或RESULT_CANCELED这两个值,第二个参数则是把带有数据的Intent传递回去,最后一定要调用了finish()方法来销毁当前活动(要不然没法跳转)。
3:由于我们是使用startActivityForResult()方法来启动第二个Activity的,在第二个Activity被销毁之后会回调上一个活动的onActivityResult()方法,因此我们需要在第一个Activity中重写这个方法,在onActivityResult的data参数中来得到返回的数据
@Override
protected voidonActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode) {
case KEY_MSG:
if(resultCode == RESULT_OK) {
StringreturnedData = data.getStringExtra(KEY_MSG_DATA);
Log.d("FirstActivity",returnedData);
}
break;
default:
}
}
注意:
1.如果setResult不带数据的话,这样写
setResult(RESULT_OK, null);
finish();
2.如果setResult返回后不跳到onActivityResult的话,这样写
setResult(RESULT_CANCELED);
finish();