fragment将数据传给activity
时间: 2024-02-18 11:59:44 浏览: 69
要在 Fragment 中将数据传递给其所属的 Activity,可以使用接口(Interface)实现回调机制。具体步骤如下:
1. 在 Fragment 中定义一个接口,该接口包含一个方法,用于传递数据。
```
public interface OnDataReceivedListener {
void onDataReceived(String data);
}
```
2. 在 Fragment 中添加一个成员变量,用于保存接口实例。
```
private OnDataReceivedListener mListener;
```
3. 在 Fragment 中重写 onAttach() 方法,在该方法中获取 Activity 实例,并将其转换成接口实例。
```
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
mListener = (OnDataReceivedListener) context;
} catch (ClassCastException e) {
throw new ClassCastException(context.toString() + " must implement OnDataReceivedListener");
}
}
```
4. 在 Fragment 中需要传递数据的地方,调用接口的方法。
```
mListener.onDataReceived("Hello, Activity!");
```
5. 在 Activity 中实现接口,重写接口方法,用于接收数据。
```
public class MainActivity extends AppCompatActivity implements OnDataReceivedListener {
// ...
@Override
public void onDataReceived(String data) {
Log.d(TAG, "Data received: " + data);
}
}
```
6. 在 Activity 中创建 Fragment 实例时,将 Activity 传递给 Fragment,以便 Fragment 可以获取 Activity 实例并将其转换成接口实例。
```
MyFragment fragment = new MyFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment).commit();
fragment.onAttach(this);
```
阅读全文