若要在两个Activity之间进行双向相互传递数据,可以使用 startActivityForResult()
方法来启动另一个Activity,并通过重写 onActivityResult()
方法来接收返回的数据。
以下是一个双向数据传递的示例:
在发送端Activity(Activity A)中:
public class ActivityA extends AppCompatActivity {
private static final int REQUEST_CODE = 1;
private void sendDataToActivityB() {
//发送数据
Intent intent = new Intent(ActivityA.this, ActivityB.class);
intent.putExtra("data", "Hello from Activity A");
startActivityForResult(intent, REQUEST_CODE);
}
//接收数据
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null) {
String receivedData = data.getStringExtra("data");
// 在这里处理从Activity B返回的数据
}
}
}
在接收端Activity(Activity B)中:
public class ActivityB extends AppCompatActivity {
private void receiveDataToActivityA() {
//接收数据
Intent intent = getIntent();
String str=intent.getExtraString("data");
}
private void sendBackDataToActivityA() {
//发送数据
Intent intent = new Intent();
intent.putExtra("data", "Hello from Activity B");
setResult(RESULT_OK, intent);
finish();
}
}
从Activity A中调用 startActivityForResult()
方法,并在Intent中添加数据,然后指定一个请求代码以及启动Activity B。Activity B可以通过 setResult()
方法设置结果码和数据,并在完成逻辑后调用 finish()
方法返回到Activity A。
然后,Activity A中的 onActivityResult()
方法会被触发,您可以在其中获取结果码和返回的数据。
请注意,当Activity B调用 setResult()
后,会触发Activity A的 onActivityResult()
方法,这意味着您可以在 onActivityResult()
中处理来自不同Activity的数据。
希望这个示例有助于在Android开发中,您可以使用startActivityForResult()
方法在两个Activity之间进行双向传递数据。这种方式适用于需要从第二个Activity返回数据给第一个Activity的情况。以下是使用startActivityForResult()
方法的基本步骤:
- 在第一个Activity中使用
startActivityForResult()
启动第二个Activity,并在调用中传递请求码(requestCode)。
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(intent, REQUEST_CODE);
- 在第二个Activity中根据需要处理相关逻辑,并将要返回的数据放入Intent中。
Intent intent = new Intent();
intent.putExtra("data", "Hello from SecondActivity");
setResult(Activity.RESULT_OK, intent);
-
在第二个Activity中调用
finish()
方法关闭Activity,同时将带有数据的Intent返回到第一个Activity。 -
在第一个Activity中重写
onActivityResult()
方法,以接收第二个Activity返回的数据。
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK) {
if (data != null) {
String receivedData = data.getStringExtra("data");
// 在这里处理接收到的数据
}
}
}
通过上述步骤,第一个Activity启动第二个Activity时传递了请求码(REQUEST_CODE),然后第二个Activity在返回数据给第一个Activity时设置了返回码(RESULT_OK)和传递数据的Intent。第一个Activity在onActivityResult()
方法中检查返回的请求码和结果码,以获得返回的数据并进行相应处理。
请注意,请求码和结果码都是整型常量,您可以自行定义。确保在处理返回数据时进行适当的空值检查。