1、FristActivity onclick() 事件中通过startActivityForResult()启动活动:
Intent intent = new Intent(FristActivity.this,SecondActivity.class);
startActivityForResult(intent, 1);
StartActivityForResult()方法中有两个参数,参数1 为intent,参数2 为请求码,用于在之后的回调中判断数据的来源;
2、SecondActivity 在onclick()方法中返回数据:
Intent intent = new Intent();
intent.putExtra("return_data", "hello Frist_activity");
setResult(RESULT_OK,intent);
setResult()专门用于向上传递数据,共有两个参数,参数1为用于向上一个活动返回处理值,一般只使用RESULT_OK和RESULT_CANCELED两个值,参数2则是把带有数据的intent传回去。
3、在第一步中我们使用startActivityForResult()启动SecondActivity,则在SecondActivity被销毁前会回调上一个活动的onActivityResult()方法,所以我们需要在FristActivity 中重写该方法来得到返回的值:
protected void onActivityResult(int requestCode,int resultCode,Intent data) {
switch (requestCode) {
case 1:
if(resultCode == RESULT_OK){
String return_string = data.getStringExtra("return_data");
Log.d(log_string, return_string);
}
break;
default:
}
}
onActivityResult()方法中有三个参数,参数1为我们在启动活动时的请求码,参数2为返回数据时传入的处理结果,参数3为返回数据的intent
由于每一个活动都有可能调用startActivityForResult ()来启动不同的活动,每一个活动返回的数据都会回调到onActivityResult()中,所以我们需要通过请求码来判断数据来源,再通过resultCode来判断处理结果是否正确
通过back键回到FristActivity并回传数据:
重写onBackPressed()方法:
public void onBackPressed(){
Intent intent = new Intent();
intent.putExtra("return_data", "hello frist_activity from back");
setResult(RESULT_OK, intent);
}