Android Studio使用onActivityResult方法将Fragment中的数据传递给Activity,Activity得到数据后进行修改并将新数据返回给原来的Fragment
时间: 2024-02-13 21:59:36 浏览: 130
Android中Activity和Fragment传递数据的两种方式
要在Fragment中将数据传递给Activity,并在Activity中使用`onActivityResult()`方法将新数据返回给原来的Fragment,可以按照以下步骤进行:
1. 在Fragment中使用`startActivityForResult()`方法启动一个新的Activity,并传递数据。例如:
```
Intent intent = new Intent(getActivity(), SecondActivity.class);
intent.putExtra("data", "Hello, Activity!");
startActivityForResult(intent, REQUEST_CODE);
```
其中`REQUEST_CODE`是一个自定义的请求码,用于标识当前的请求。
2. 在Activity中重写`onActivityResult()`方法,获取从Fragment传递过来的请求码和数据,进行相应的处理,并将新数据返回给原来的Fragment。例如:
```
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null) {
String newData = data.getStringExtra("newData");
textView.setText(newData);
// 将新数据返回给原来的Fragment
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
if (fragment != null && fragment instanceof Fragment) {
((Fragment) fragment).updateData(newData);
}
}
}
```
其中,`RESULT_OK`表示操作成功,`data`是一个Intent对象,包含从SecondActivity返回的数据。
3. 在SecondActivity中获取从FirstFragment传递过来的数据,并进行相应的处理。例如:
```
Intent intent = getIntent();
String data = intent.getStringExtra("data");
// 进行相应的处理
// 返回新数据给原来的Fragment
Intent intent = new Intent();
intent.putExtra("newData", "Hello, Fragment!");
setResult(RESULT_OK, intent);
finish();
```
在这里,我们将新数据"Hello, Fragment!"存放在Intent中,并将操作结果设置为`RESULT_OK`,然后调用`finish()`方法将当前Activity销毁并返回上一个Activity。
4. 最后,在原来的Fragment中定义一个方法,用于接收新数据并进行修改。例如:
```
public void updateData(String data) {
textView.setText(data);
}
```
这样,就完成了从Fragment中将数据传递给Activity,并使用`onActivityResult()`方法将新数据返回给原来的Fragment的过程。
阅读全文