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");
相关推荐
陈大头铃儿响叮当11 分钟前
Android Studio升级后,Flutter运行android设备报错
android·flutter·android studio
勤劳打代码26 分钟前
isar_flutter_libs 引发 Namespace not specified
android·flutter·groovy
奔跑吧 android2 小时前
【android bluetooth 协议分析 18】【PBAP详解 2】【车机为何不显示电话号码为空的联系人信息】
android·蓝牙电话·hfp·pbap·电话簿
深盾科技2 小时前
安卓二次打包技术深度拆解:从逆向篡改到防护逻辑
android
4Forsee2 小时前
【Android】消息机制
android·java·前端
2501_915921433 小时前
iOS 虚拟位置设置实战,多工具协同打造精准调试与场景模拟环境
android·ios·小程序·https·uni-app·iphone·webview
龚礼鹏3 小时前
Android 图像显示框架三——演示demo以及解析
android·交互
QuantumLeap丶4 小时前
《Flutter全栈开发实战指南:从零到高级》- 11 -状态管理Provider
android·flutter·ios
百锦再4 小时前
第6章 结构体与方法
android·java·c++·python·rust·go
gustt4 小时前
用小程序搭建博客首页:从数据驱动到界面展示
android·前端·微信小程序