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");
相关推荐
2401_8979078631 分钟前
10天学会flutter DAY2 玩转dart 类
android·flutter
m0_748233641 小时前
【PHP】部署和发布PHP网站到IIS服务器
android·服务器·php
Yeats_Liao2 小时前
Spring 定时任务:@Scheduled 注解四大参数解析
android·java·spring
雾里看山4 小时前
【MySQL】 库的操作
android·数据库·笔记·mysql
水瓶丫头站住12 小时前
安卓APP如何适配不同的手机分辨率
android·智能手机
xvch13 小时前
Kotlin 2.1.0 入门教程(五)
android·kotlin
xvch17 小时前
Kotlin 2.1.0 入门教程(七)
android·kotlin
望风的懒蜗牛17 小时前
编译Android平台使用的FFmpeg库
android
浩宇软件开发17 小时前
Android开发,待办事项提醒App的设计与实现(个人中心页)
android·android studio·android开发
ac-er888818 小时前
Yii框架中的多语言支持:如何实现国际化
android·开发语言·php