Android Studio将Fragment中的数据传递给Activity,Activity得到数据后进行修改并将新数据返回给原来的Fragment
时间: 2024-02-13 19:59:35 浏览: 25
要在Fragment中将数据传递给Activity,可以使用接口回调的方式。首先,在Fragment中定义一个接口,包含一个方法用于传递数据。例如:
```
public interface OnDataPass {
void onDataPass(String data);
}
```
然后,在Fragment的onAttach()方法中获取Activity的实例,并将其转换为接口类型:
```
private OnDataPass dataPasser;
@Override
public void onAttach(Context context) {
super.onAttach(context);
dataPasser = (OnDataPass) context;
}
```
接下来,在需要传递数据的地方调用接口方法,将数据传递给Activity:
```
dataPasser.onDataPass("Hello, Activity!");
```
在Activity中实现接口,重写onDataPass()方法,获取传递过来的数据并进行修改。例如:
```
public class MainActivity extends AppCompatActivity implements Fragment.OnDataPass {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
Fragment fragment = new Fragment();
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, fragment).commit();
}
@Override
public void onDataPass(String data) {
textView.setText(data);
// 将新数据返回给原来的Fragment
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
if (fragment != null && fragment instanceof Fragment) {
((Fragment) fragment).updateData("Hello, Fragment!");
}
}
}
```
最后,在Activity中将新数据返回给原来的Fragment,可以在接口回调的方法中获取Fragment实例,并调用其方法进行数据更新。例如:
```
public void updateData(String data) {
textView.setText(data);
}
```
这样就完成了Fragment和Activity之间的数据传递和修改。