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");
相关推荐
AFinalStone2 小时前
Android 7系统异常问题排查(四)Framework层(上)—System Server Watchdog
android·系统异常
宝杰X74 小时前
Android Room3 多平台数据库
android·数据库
huibin1478523697 小时前
热缓解学习记录
android·学习
小田的博客10 小时前
SAP MM 供应商银行主数据更新报错!message R1228!
android·java·服务器
一笑的小酒馆11 小时前
Android智能猫砂盆视频加载慢卡顿问题分析
android
只会cv的小前端12 小时前
七巧低代码服务端脚本使用方法
android·低代码·rxjava
12 小时前
Android 自定义 View 实战:从零打造工业级全向摇杆控件(OmniJoystickView)
android·kotlin·自定义view·摇杆控件
雨白13 小时前
深入理解 Kotlin 协程 (十一):以逸待劳,探秘 select 多路复用与并发安全策略
android·kotlin
hunterandroid15 小时前
[Android 从零到一] Android 深度链接与 App Links:从 URI Scheme 到可验证的应用跳转
android
我命由我1234517 小时前
Jetpack Compose - Material Design 断点范围、WindowSizeClass、针对不同屏幕尺寸创建预览、四类导航栏
android·java·开发语言·java-ee·kotlin·android jetpack·android runtime