1,在MainActivity中调用Activity的StartActivityForResult()方法
先构建一个指明意图的Intent,再调用StartActivityForResult()并传入该Intent例如
Intent intent = new Intent(MainActivity.this, Activity2.class);
startActivityForResult(intent,1);//第一个参数为传入的intent,第二个参数为请求码,用于在之后的回调中判断数据的来源
2,在Activity2中构建一个Intent用于存储需要返回的信息,并调用setResult()方法
Intent intent = new Intent();
intent.putExtra("name", "helloWorld");//以键值对的形式保存数据
setSesult(RESULT_OK,intent);//第一个参数用于向上一个活动返回处理结果,一般使用RESULT_OK 或RESULT_CANCELED,第二个参数则是把带有数据的intent传递给上一个活动
finish();//调用该方法结束活动
3,在MainActivity中处理返回的数据,由于是使用StartActivityForResult()方法启动的Activity2,在Activity2被销毁后,会回调MainActivity中的onActivityResult()方法
在MainActivity中重写onActivityResult()方法
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
//第一个参数即启动Activity2时的请求码,第二个参数是Activity2中传入的处理结果,第三个参数data则是携带了数据的intent
switch (requestCode) {
//判断请求码
case 1:
//请求码为1则说明回调请求来自Activity2
if (resultCode==RESULT_OK) {
//如果resultCode为RESULT_OK则说明返回数据处理成功
String data1 = data.getStringExtra("name");
Toast.makeText(this, data1, Toast.LENGTH_SHORT).show();
}
}
}