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 Android Live2D 2026 实战:模型加载 + 集成渲染 + 显示全流程 + 10 个核心坑( OpenGL )
android·flutter·live2d
冬奇Lab3 小时前
ANR实战分析:一次audioserver死锁引发的系统级故障排查
android·性能优化·debug
冬奇Lab3 小时前
Android车机卡顿案例剖析:从Binder耗尽到单例缺失的深度排查
android·性能优化·debug
ZHANG13HAO4 小时前
调用脚本实现 App 自动升级(无需无感、允许进程中断)
android
圆号本昊5 小时前
【2025最新】Flutter 加载显示 Live2D 角色,实战与踩坑全链路分享
android·flutter
小曹要微笑5 小时前
MySQL的TRIM函数
android·数据库·mysql
mrsyf6 小时前
Android Studio Otter 2(2025.2.2版本)安装和Gradle配置
android·ide·android studio
DB虚空行者6 小时前
MySQL恢复之Binlog格式详解
android·数据库·mysql
liang_jy8 小时前
Android 事件分发机制(一)—— 全流程源码解析
android·面试·源码