首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实例化新的Android Fragment的最佳做法?

实例化新的Android Fragment的最佳做法?

提问于 2017-12-19 03:22:11
回答 2关注 0查看 1.1K

"已经看到了两个通用实践来在应用程序中实例化一个新的片段:

Fragment newFragment = new MyFragment();

Fragment newFragment = MyFragment.newInstance();

第二个选项使用静态方法newInstance(),通常包含以下方法。

public static Fragment newInstance()

{

MyFragment myFragment = new MyFragment();

return myFragment;

}

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

"

回答 2

死者是小智

发布于 2017-12-19 04:03:17

使用newInstance()我看到的唯一好处是以下几点:

您将拥有一个可以将片段使用的所有参数捆绑在一起的单独位置,而且每次实例化片段时都不必写下面的代码。

代码语言:txt
AI代码解释
复制
Bundle args = new Bundle();
代码语言:txt
AI代码解释
复制
args.putInt("someInt", someInt);
代码语言:txt
AI代码解释
复制
args.putString("someString", someString);
代码语言:txt
AI代码解释
复制
// Put any other arguments
代码语言:txt
AI代码解释
复制
myFragment.setArguments(args);

它是一个很好的方法来告诉其他类什么它期望忠实地工作(虽然你应该能够处理的情况下,如果没有参数在片段实例绑定)。

所以,我认为使用静态newInstance()来实例化一个片段是一个好习惯。

嗝屁

发布于 2017-12-19 04:02:58

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

就这么说,把东西传递给你的Fragment的方式,以便在Android重新创建片段之后它们是可用的,就是把一个包传递给setArguments方法。

所以,例如,如果我们想要传递一个整数给片段,我们可以使用如下的东西:

代码语言:txt
AI代码解释
复制
public static MyFragment newInstance(int someInt) {
代码语言:txt
AI代码解释
复制
    MyFragment myFragment = new MyFragment();
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    Bundle args = new Bundle();
代码语言:txt
AI代码解释
复制
    args.putInt("someInt", someInt);
代码语言:txt
AI代码解释
复制
    myFragment.setArguments(args);
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    return myFragment;
代码语言:txt
AI代码解释
复制
}

在后面的片段中,onCreate()您可以使用以下命令访问该整数:

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

即使片段被Android重新创建,这个Bundle也是可用的。

还要注意:setArguments只能在片段附加到活动之前调用。

和开发者交流更多问题细节吧,去 写回答
相关文章
Android Fragment 简单实例
  Android上的界面展示都是通过Activity实现的。Activity实在是太经常使用了。我相信大家都已经很熟悉了,这里就不再赘述。 可是Activity也有它的局限性,相同的界面在手机上显示可能很好看,在平板上就未必了,由于平板的屏幕很大。手机的界面放在平板上可能会有过分被拉长、控件间距过大等情况。这个时候更好的体验效果是在Activity中嵌入”小Activity”。然后每个”小Activity”又能够拥有自己的布局。这就是Fragment碎片技术。
全栈程序员站长
2022/07/10
6740
Android Fragment 简单实例
Navigation——Fragment创建新的实例问题详解
上一篇文章Navigation——Fragment创建新的实例问题,我们简述了我们在使用Navigation遇到的Fragment创建新的实例的问题。接下来,我们在这篇文章就来解决一下我们遇到的这个问题
Demo_Yang
2019/05/15
2.5K0
Navigation问题详解——Fragment创建新的实例
周末,有位同学在微信公共号后台,给我留言,说看了我之前写两篇文章,谷歌官方组件Navigation你了解了吗?、谷歌官方组件Navigation你会用了吗?之后,也在尝试使用Navigation,但是使用的过程当中遇到了问题: 每次进入下一个Fragment不管任务栈里是否存在该Fragment的实例,都会创建一个新的实例而不会复用。 为了说明问题,我录了一个GIF
Demo_Yang
2019/04/25
2K0
Navigation问题详解——Fragment创建新的实例
保护VoIP网络的最佳做法
许多业务主管共享有关VoIP的重要信息,因此,您希望保持VoIP网络的安全。 与传统的电话和蜂窝服务相比,企业VoIP客户和服务提供商容易遭受许多固有的安全风险。 这些安全问题是最大的威胁。
虹科网络可视化与安全
2020/03/31
7680
保护VoIP网络的最佳做法
Android碎片化布局fragment的实战应用
Fragment其实可以理解为一个具有自己生命周期的控件,只不过这个控件又有点特殊,它有自己的处理输入事件的能力,有自己的生命周期,又必须依赖于Activity,能互相通信和托管。
Vaccae
2019/07/25
9220
文件上传的最佳前端体验做法
网页开发者们想了很多办法,试图提升文件上传的功能和操作体验,在各种Javascript库的基础上,开发了五花八门的插件。可是,由于不同浏览器之间的差异,缺乏统一接口,这些插件要么用起来很麻烦,要么不能普遍适用。
javascript.shop
2019/09/05
1.9K0
文件上传的最佳前端体验做法
Vue中的15个最佳做法
在需要操纵数据时,将key属性与v-for指令一起使用可以让程序保持恒定且可预测。
刘亦枫
2020/03/19
1.3K0
改善CSS的10种最佳做法
英文 | https://medium.com/better-programming/10-best-practices-for-improving-your-css-84c69aac66e
ConardLi
2020/06/01
8750
改善CSS的10种最佳做法
CSS似乎是一种非常简单的语言,很难在其中犯错误。你只需添加样式规则,就可以对网站进行样式设置了,对吗?对于只需要几个CSS文件的小型网站,情况可能就是这样。但是在大型应用程序中,样式可能会迅速失控。你如何使它们易于管理?
winty
2020/06/01
7540
12 种使用 Vue 的最佳做法
随着 VueJS 的使用越来越广泛,出现了几种最佳实践并逐渐成为标准。在本文中,主要分享在平时开发中一些有用资源和技巧,废话少说,我们开始吧。
前端达人
2020/03/26
1.2K0
12 种使用 Vue 的最佳做法
防止 Git 泄漏的 5 种最佳做法
之前看过几个新闻,说是因为程序员的疏忽,将公司服务器的密钥上传到 GitHub 上,导致公司数据丢失,造成了很严重的影响,恰巧最近看到一篇英文博客有介绍如何防止 Git 泄露,下面是我的翻译内容,原文来自于 5 Best Practices To Prevent Git Leaks[1],如果有翻译不当的地方欢迎指正,希望能对你有所帮助。
出其东门
2020/04/26
2.1K0
防止 Git 泄漏的 5 种最佳做法
android Fragment 的简单应用
FrameLayout布局是安卓最简单的一个布局,它所有的控件都会被摆放在左上角。
Petterp
2022/02/09
4730
android Fragment 的简单应用
android acitivity 跳转到fragment,android Activity跳转到指定的Fragment
Intent show=new Intent(GrXxActivity.this,MyActivityFragment.class);
全栈程序员站长
2022/08/31
6210
Android开发之漫漫长途 XIII——Fragment最佳实践
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列。该系列引用了《Android开发艺术探索》以及《深入理解Android 卷Ⅰ,Ⅱ,Ⅲ》中的相关知识,另外也借鉴了其他的优质博客,在此向各位大神表示感谢,膜拜!!!
LoveWFan
2018/08/07
1.3K0
Android开发之漫漫长途 XIII——Fragment最佳实践
点击加载更多

相似问题

在类型记录中如何实例化新的HTMLElement?

2437

通过之前实例的镜像来创建新实例 不包括数据盘吧?

1305

请问,为什么超级播放器在android的fragment中,暂停后无法继续播放?

1159

Android与js交互实例?

0177

已创建的镜像为什么无法用来启动新实例?

2595
相关问答用户
某公司 | 程序员擅长1个领域
新浪微博 | 高级总监擅长4个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档