fragment向activity传数据可以用intent吗
时间: 2023-12-17 22:03:21 浏览: 77
在Fragment向Activity传递数据时,可以使用Intent来实现。具体步骤如下:
1. 在Fragment中创建一个Intent对象,并将要传递的数据存入Intent中。例如,要传递一个字符串数据,则可以使用putExtra()方法:
```
Intent intent = new Intent();
intent.putExtra("key", "要传递的数据");
```
2. 在Fragment中调用getActivity()方法获取Activity对象,然后调用setResult()方法将Intent对象存入Activity中:
```
getActivity().setResult(Activity.RESULT_OK, intent);
```
注意:如果需要在Fragment中调用setResult()方法,那么在启动Fragment时,需要使用startActivityForResult()方法启动,否则会抛出异常。
3. 在Activity中重写onActivityResult()方法,通过requestCode和resultCode判断是哪个Fragment返回的结果,并读取Intent中的数据:
```
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK) {
String result = data.getStringExtra("key");
// 处理传递过来的数据
}
}
```
这样,就可以将数据从Fragment传递到Activity了。需要注意的是,在Fragment中调用setResult()方法时,requestCode和resultCode要和启动Fragment时传入的值保持一致。同时,在Activity中重写onActivityResult()方法时,requestCode和resultCode也要和启动Fragment时传入的值保持一致。
阅读全文