"本文介绍了在Android开发中,Activity与Fragment之间传递数据的两种主要方法:使用Bundle和通过定义宿主Activity的方法。" 在Android应用开发中,Activity和Fragment之间的数据交互是常见的需求。以下是两种主要的传递数据方式: 1. 使用Bundle传递参数 这是最常见且直接的方式。首先,在需要发送数据的Activity或另一个Fragment中,创建一个新的Bundle对象,然后使用put方法(如`putString()`)将数据存入Bundle。接着,将Bundle作为参数传递给目标Fragment的`setArguments(Bundle)`方法。例如: ```java MyFragment myFragment = new MyFragment(); Bundle bundle = new Bundle(); bundle.putString("DATA", values); // 将values放入Bundle myFragment.setArguments(bundle); ``` 在接收数据的Fragment中,通常在`onCreateView()`或`onActivityCreated()`方法中,使用`getArguments()`获取Bundle对象,然后通过`getString()`等方法根据key获取数据: ```java @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // ... Bundle arguments = getArguments(); String receivedValues = arguments.getString("DATA"); // ... } ``` 2. 通过定义宿主Activity的方法传递数据 另一种方式是,让宿主Activity提供一个公开的方法,将数据作为参数传递给Fragment。在Fragment的`onAttach()`方法中,可以通过`getActivity()`获取宿主Activity的引用,然后调用该方法。例如: ```java // 宿主Activity中的方法 public String getTitles() { return "hello"; } // Fragment中的onAttach方法 @Override public void onAttach(Context context) { super.onAttach(context); if (context instanceof MainActivity) { titles = ((MainActivity) context).getTitles(); } } ``` 此外,为了更方便地创建并传递数据,还可以在Fragment中定义一个静态的`newInstance()`方法,接收参数并创建带有数据的新实例: ```java // Fragment中的newInstance方法 public static MyFragment newInstance(String s) { MyFragment myFragment = new MyFragment(); Bundle bundle = new Bundle(); bundle.putString("DATA", s); myFragment.setArguments(bundle); return myFragment; } // 使用时,直接调用此方法创建带有数据的Fragment MyFragment myFragment = MyFragment.newInstance("someValue"); ``` 在`onCreateView()`或`onActivityCreated()`中,仍然可以通过`getArguments()`和`getString()`获取传递的数据。 这些方法使得Activity和Fragment之间的通信变得简单而灵活,但要注意避免内存泄漏和不必要的数据冗余。在处理复杂的业务逻辑时,也可以考虑使用接口回调或者LiveData等更高级的通信机制。
![](https://csdnimg.cn/release/download_crawler_static/14880637/bg1.jpg)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 1
- 资源: 909
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- Vue实现iOS原生Picker组件:详细解析与实现思路
- Arduino蓝牙小车:参数调试与功能控制
- 百度Java面试精华:200页精选资源涵盖核心知识点
- Swift使用CoreData填坑指南:CoreData在Swift 3.0的变化
- 微距离无线充电器创新设计及其实验探索
- MTK Android平台开发全攻略:44步详解流程
- RecyclerView全面解析:替代ListView的新选择
- Android开发:自动适配中英文键盘解决方案
- Android调用WebService接口教程
- Android开发:BitmapUtil图片处理全解析与实例
- Android多线程断点续传实现详解
- PCA算法在人脸识别会议签到系统中的应用
- EventBus 3.0:Android事件总线详解与实战应用
- Android FileUtil:全面解析文件操作实用技巧与实例
- RecyclerView添加头部和尾部实战教程
- Android实现微博滑动固定顶部栏实战与优化
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)