Android中向Fragment传递数据

为什么不推荐用构造函数传递参数

有人说向Fragment传递数据可以通过构造函数或者public方法,这确实是可以传递成功的,但是安卓官方并不推荐这两种方法,而是推荐用setArguments()方法来向Fragmen传递数据,这是为什么呢?

根据Android官方文档说明,当一个Fragment重新创建的时候,系统会再次调用Fragment中的默认构造函数,而不是带参数的构造函数。一旦由于什么原因(例如横竖屏切换)导致你的Fragment重新创建。那么你之前传递的参数都不见了,因为recreate你的Fragment的时候,调用的是默认构造函数。因此官方推荐使用Fragment.setArguments(Bundle bundle)这种方式来传递参数,而不推荐通过构造方法直接来传递参数。

设置参数

java 复制代码
Fragment fragment = new Fragment();
Bundle bundle = new Bundle();
bundle.putInt("type", type);
fragment.setArguments(bundle);

获取参数

java 复制代码
int type = getArguments().getInt("type");
相关推荐
传奇开心果编程2 小时前
【Flutter入门练中学】第11课:状态管理进阶与声明式路由
android·学习·flutter·ui·ios
JasonSJX3 小时前
四端自建播放器怎么落地:Android、iOS、tvOS、Tizen 的 DRM 播放 SDK 技术盘点
android·ios·音视频·视频防录屏·加密保护课程·直播安全
驰骋工作流3 小时前
工作流引擎四大流程模块功能点统计:769 项能力清单梳理低代码工作流引擎表单
android·低代码·rxjava
恋猫de小郭3 小时前
Flutter 多窗口重要优化合并,多窗口性能和实用性大幅提升
android·前端·flutter
AirDroid_cn3 小时前
实时定位孩子手机超便捷!iPhone家长同步收提醒,省心又踏实
android
hai_android4 小时前
LruCache 图片浏览器内存缓存
android·java·kotlin
今天要早睡_4 小时前
C++入门到精通:类和对象(下)全方位解析
android·c++
Godikov9 小时前
在 Android 上跑 Kafka Consumer:一个实时定位数据接入的踩坑记录
android
mmsx9 小时前
Android 自定义 View 三关:触摸分发、绘制与坐标错位
android·kotlin
JMchen9 小时前
自定义View在复杂业务场景中的实战
android·kotlin·canvas