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");
相关推荐
zhangphil9 分钟前
Android系统如何把Bitmap通过RenderThread及GPU器件显示到屏幕
android
2501_9444241213 分钟前
Flutter for OpenHarmony游戏集合App实战之数字拼图滑动交换
android·开发语言·flutter·游戏·harmonyos
a31582380629 分钟前
Android编码规范(修订版)
android·代码规范
灵感菇_29 分钟前
Android OkHttp框架全解析
android·java·okhttp·网络编程
w***765530 分钟前
快速上手DCAT-Admin开发指南
android
技术摆渡人41 分钟前
专题二:【驱动进阶】打破 Linux 驱动开发的黑盒:从 GPIO 模拟到 DMA 陷阱全书
android·linux·驱动开发
汤姆yu1 小时前
基于android的个人健康系统
android
2501_944526421 小时前
Flutter for OpenHarmony 万能游戏库App实战 - 关于页面实现
android·java·开发语言·javascript·python·flutter·游戏
大大祥1 小时前
Android FFmpeg集成
android·ffmpeg·kotlin·音视频·jni·ndk·音视频编解码
墨雪不会编程1 小时前
C++【string篇4】string结尾篇——字符编码表、乱码的来源及深浅拷贝
android·开发语言·c++