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");
相关推荐
pengyu15 分钟前
系统化掌握Dart网络编程之Dio(二):配置管理篇
android·flutter·dart
Yang-Never1 小时前
Open GL ES ->纹理贴图,顶点坐标和纹理坐标组合到同一个顶点缓冲对象中进行解析
android·java·开发语言·android studio·贴图
a3158238061 小时前
SnapdragonCamera骁龙相机源码解析
android·数码相机·framework·高通
IT乐手1 小时前
adb logcat 写文件乱码的解决方案
android·python
xiaoduyyy2 小时前
【Android】View动画—XML动画、帧动画
android·xml
weixin_454102462 小时前
cordova android12+升级一些配置注意事项
android·前端·cordova
兰亭序咖啡3 小时前
学透Spring Boot — 007. 加载外部配置
android·java·spring boot
8931519604 小时前
Android穿山甲banner广告穿插到项目的banner中
android·android开发·android教程·穿山甲banner广告加入项目
利明的博客5 小时前
mediacodec服务启动时加载media_codecs.xml
android·xml·java
高林雨露6 小时前
Kotlin 基础语法解析
android·开发语言·kotlin