FirstActivity 向 SecondActivity 发送数据,通过 putExtra()、startActivityForResult()
第一步(在FirstActivity.java中)
btn_1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String string = "Hello SecondActivity";
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
// 往intent中添加要发送的数据String和键值"Send_data"
intent.putExtra("Send_data", string);
// 这里的1是请求码 requestCode
startActivityForResult(intent, 1);
}
});
SecondActivity 获取数据并向 FirstActivity 返回数据,通过 getIntent()、getStringExtra()、setResult()
第二步(在SecondActivity.java中)
通过普通按钮
// getIntent方法用于获取用于启动SecondActivity的Intent
Intent intent = getIntent();
// 调用getStringExtra方法,传入相应的键值"Send_data",就可以得到相应的数据了
String data = intent.getStringExtra("Send_data");
Toast.makeText(SecondActivity.this, data, Toast.LENGTH_SHORT).show();
btn_2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
// 往intent中添加要返回的数据Hello FirstActivity和键值"Return_data"
intent.putExtra("Return_data", "Hello FirstActivity");
// 第一个参数:返回处理结果(一般只用RESULT_OK、RESULT_CANCELED)
// 第二个参数:把带有数据的Intent传递回去
setResult(RESULT_OK, intent);
// 销毁当前Activity
finish();
}
});
通过系统Back按钮
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("Return_data", "Button Back Pressed");
setResult(RESULT_OK, intent);
finish();
}
FirstActivity接收返回数据并处理 ,通过 onActivityResult(int requestCode, int resultCode, Intent data)
第三步(在FirstActivity.java中)
onActivityResult方法中的3个参数分别是 1(请求码), RESULT_OK(返回处理结果), data(携带着返回数据的 intent)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// 1、先检查requestCode请求码的值,判断数据来源
switch (requestCode) {
case 1:
// 2、然后检查resultCode的值,判断处理结果是否成功
if (resultCode == RESULT_OK) {
// 3、最后从data获取到返回数据并处理
String returnedData = data.getStringExtra("Return_data");
Toast.makeText(this, returnedData, Toast.LENGTH_SHORT).show();
Log.d("data", returnedData);
}
break;
default:
break;
}
}
完成