首页 > 其他分享 >实例化一个新的Android Fragment的最佳实践

实例化一个新的Android Fragment的最佳实践

时间:2023-11-03 20:47:49浏览次数:49  
标签:someInt Fragment newInstance 实例 MyFragment myFragment Android

内容来自 DOC https://q.houxu6.top/?s=实例化一个新的Android Fragment的最佳实践

我看到了在应用程序中实例化一个新的Fragment的两种常见做法:

Fragment newFragment = new MyFragment();

Fragment newFragment = MyFragment.newInstance();

第二种选项利用了静态方法 newInstance(),并且通常包含以下方法。

public static Fragment newInstance() 
{
    MyFragment myFragment = new MyFragment();
    return myFragment;
}

起初,我认为主要的好处是我可以在创建Fragment的新实例时重载newInstance()方法以提供灵活性,但这也可以通过为Fragment创建一个重载的构造函数来实现。

我是不是漏掉了什么?

哪种方法更好?还是只是一种好的做法?


如果Android稍后决定重新创建您的Fragment,它将调用您的Fragment的无参数构造函数。因此,重载构造函数并不是一个解决方案。

这样说来,将东西传递给您的Fragment以便在Android重新创建Fragment后仍然可用的方法是将bundle传递给setArguments方法。

例如,如果我们想将一个整数传递给片段,我们可以使用类似以下的内容:

public static MyFragment newInstance(int someInt) {
    MyFragment myFragment = new MyFragment();

    Bundle args = new Bundle();
    args.putInt("someInt", someInt);
    myFragment.setArguments(args);

    return myFragment;
}

然后在Fragment的onCreate()中,您可以通过以下方式访问该整数:

getArguments().getInt("someInt", 0);

即使Fragment被Android以某种方式重新创建,此Bundle也将可用。

还要注意:setArguments只能在Fragment附加到Activity之前调用。

这种方法也在android开发者参考中进行了记录:https://developer.android.com/reference/android/app/Fragment.html

标签:someInt,Fragment,newInstance,实例,MyFragment,myFragment,Android
From: https://www.cnblogs.com/xiaomandujia/p/17808406.html

相关文章

  • 安卓主板_android主板_联发科MTK方案平台PCBA定制
    安卓主板是一种采用ARM架构并内置Android操作系统的嵌入式智能主板。相比于Linux,安卓主板在消费级和商用嵌入式智能终端市场非常成熟。与传统的单片机相比,安卓主板具有更高的性能和更丰富的接口,可以满足更复杂的开发和应用需求。目前,安卓主板在主流行业领域的应用方向包括AI人......
  • 如何使用 print() 打印类实例?
    内容来自DOChttps://q.houxu6.top/?s=如何使用print()打印类实例?当我尝试使用print()打印一个类的实例时,我得到的输出是这样的:>>>classTest():...def__init__(self):...self.a='foo'...>>>print(Test())<__main__.Testobjectat0x7fc9a9e36d......
  • Android 11 下拉菜单长按WiFi图标SystemUI ANR
    bug描述:(MTK)--Android11的SystemUI下拉菜单长按图标(tiles)导致SystemUI崩溃重启。10-0108:01:11.23657925833EAndroidRuntime:FATALEXCEPTION:AsyncTask#110-0108:01:11.23657925833EAndroidRuntime:Process:com.android.systemui,PID:579210-0108......
  • 浅谈PHP框架中类成员方法的类类型形参是怎么利用ReflectionClass反射类自动实例化的(应
    说明1.或许是全网首发,我翻过很多文章,从未有一个博主讲过这个东西,很多博主只讲了IOC、DI和反射机制的常见用法,因类类型形参反射的巧妙用法有相当高的难度和学习盲区,所以从未有人讲过类类型的形参它怎么就被自动实例化的。2.在Laravel框架,或者是其它框架中,类的成员方法中形参的......
  • 史上最全的Android面试题集锦
    前言由于之前从上海离职,来到深圳找工作。然后准备面试的时候,发现网上很多Android面试题及答案整理都没有答案,在成功的拿到几家公司的offer后(虽然不是阿里、网易这种级别的公司,但对我一个毕业三年的Android开发来说,算是成功的从小公司跳到大公司)自己总结了一些最近面试过的Androi......
  • Android项目中引入aar包的新方法
    一、已过期的方法:1、把aar文件放在一个文件目录内,比如就放在工程的libs目录内;2、在app的build.gradle文件添加如下内容:(该配置和dependencies配置是一个位置级别)repositories{flatDir{dirs'libs'}}3、最后需要在dependencie......
  • 手机直播源码,Android Shape设置背景
    手机直播源码,AndroidShape设置背景设置背景时,经常这样android:background=“@drawable/xxx”。如果是纯色图片,可以考虑用shape替代。shape相比图片,减少资源占用,缩减APK体积。<?xmlversion="1.0"encoding="utf-8"?><shape  xmlns:android="http://schemas.android.c......
  • Android WiFi工具类
    ✍️作者简介:沫小北/码农小北(专注于Android、Web、TCP/IP等技术方向)</br>......
  • android侧滑应用学习记录
    android侧滑菜单怎么禁止滑动1、点击图标,看看是哪个软件的快捷组件。打开软件的设置,取消桌面或其它界面显示就OK。另外,也可以通过权限设置,禁止软件显示通知等等,禁止这一类的组件和任务栏显示。2、打开“设置”面板;找到“个人”类里的“安全”选项。点击进入;找到选项“屏幕锁定”选......
  • 弯道超车,Android初级程序员进阶修炼手册
    前言是否有很多Android程序员已经进入了这么一种状态,感觉晋升无望,每天维护同样的模块,写的代码也很少出现bug,即使有bug也能迅速解决,当年对IT的热爱也快要消磨殆尽了。据统计,今年的毕业生将创历史新高,多达1158万。并不是说所有毕业生都会进入IT行业,但每年进入IT行业只多不少,而一直身......