实例化新 Android Fragment 的最佳实践

2024-01-01

我见过在应用程序中实例化新片段的两种一般做法:

Fragment newFragment = new MyFragment();

and

Fragment newFragment = MyFragment.newInstance();

第二个选项使用静态方法newInstance() and 一般来说包含以下方法。

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

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

我错过了什么?

一种方法相对于另一种方法有什么好处?或者这只是一个好的做法?


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

话虽这么说,将内容传递给 Fragment 以便它们在 Android 重新创建 Fragment 后可用的方法是将一个包传递给setArguments method.

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

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

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

    return myFragment;
}

后来在片段中onCreate()您可以使用以下方法访问该整数:

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实例化新 Android Fragment 的最佳实践 的相关文章

  • 从数据库中删除项目后如何从 recyclerView 中删除项目

    我正在使用 recyclerView 来显示当用户单击每个项目的删除按钮时可以删除的项目列表 为了做到这一点 我使用了 recyclerview 适配器 我想要的是 从该 recycleView 适配器中 当用户单击某个项目的删除按钮时 会
  • 如何访问对话框中的 EditText 字段?

    如何访问对话框中的 EditText 字段 将 EditText 小部件放入对话框中
  • 如何在从另一个活动调用一个活动时延迟一些?

    我有一个应用程序 其中我正在接收包含他的位置的短信 收到短信后 它会调用另一个活动来启动并将该位置传递给该活动以将其绘制在地图上 在调用第二个活动之前 它会显示一个类似于通知的吐司在屏幕上 但由于调用第二个活动 吐司没有出现 我的问题是我们
  • 为什么Volley的onResponse没有被调用

    我正在通过 Volley 获取 json 数据 我遇到的问题 那是凌空的onResponse从未被调用 因此不会解析和显示数据 JSON 数据示例 title This is a sample text title title cat or
  • Android Studio 1.2.1.1 中 Gradle 项目刷新失败

    我在全新安装的 Android Studio v 1 2 1 1 上创建了示例项目 但遇到了以下错误消息 Gradle project refresh failed in Android Studio 1 2 1 1 见下图 所以我试图在谷
  • 使用 Backstack 时 TabLayout ViewPager 未加载 [重复]

    这个问题在这里已经有答案了 我在一个片段中使用 TabLayout 和 viewPager 在选项卡下方的两个片段之间切换 当我单击下部片段之一内的 FAB 时 我会加载一个新片段 用于输入 但是 当我按 后退 按钮时 TabLayout
  • 如何让android BottomAppBar圆角化

    我正在使用BottomAppBar来自谷歌这样的
  • 如何在 Android 上通过 RTMP 进行流式传输?

    我正在尝试在远程服务器上播放视频文件 视频格式为flv 服务器为Flash Media Server3 5 我将通过 RTMP 连接到服务器并使用 Android Media Player 实现视频文件的播放 真的吗 可能吗 任何帮助都是我
  • 将 XML 从网站解析到 Android 设备

    我正在启动一个 Android 应用程序 它将解析来自网络的 XML 我创建了一些 Android 应用程序 但它们从未涉及解析 XML 我想知道是否有人对最佳方法有任何建议 这是一个例子 try URL url new URL your
  • 如何发现另一个应用程序的意图

    我正在尝试构建一个应用程序来接收来自 StumbleUpon 应用程序的共享 此时 我可以接收浏览器的 共享网址 但是当从 StumbleUpon 共享时 我的应用程序不会显示在列表中 我想我可能没有在清单中注册正确的意图 有什么方法可以找
  • 如何使用特定选项卡启动活动?

    我已经浏览了许多示例 问题和教程 但我从未见过使用特定选项卡启动活动 启动新意图 我知道可以使用 setCurrentTab切换到选项卡 但这只能从父活动选项卡内部完成 从另一个活动启动一个活动中包含的特定选项卡怎么样 是否可以 如果是这样
  • 更改适配器数据时,RecyclerView 滚动到顶部位置

    我正在对某个帖子进行喜欢和不喜欢RecyclerView 我在更改视图后调用api 但问题是RecyclerView当我通知它更新时 总是滚动到顶部 这是我的适配器代码 likeAnim setOnLikeListener object O
  • logcat 信息出现在 Android Studio 的“运行”选项卡中

    我的 android studio 运行选项卡很简单 然后它变得更难并给我更多信息 例如 logcat 中的信息 如何禁用或删除第二张图片中出现的更多信息并返回到第一张图片中的第一个外观 我只需要正在运行的 flutter 应用程序的日志输
  • 如何在android上使用xamarin表单执行脚本

    我正在尝试在 Android Mono 上使用 Xamarin Forms 运行 C 脚本 当我运行脚本时 我收到错误 System IO FileNotFoundException 找不到文件 mscorlib dll 这是我试图执行的代
  • 加载带有月份标题的 recyclerview 不同类型适配器

    如果从 api 获取不同的月份名称 则尝试将月份名称显示为标题 在这里 我加载月份标题 但是当我加载标题时 它不会加载其他视图 如果数据不同 我需要将月份加载为标题 并且还加载其他视图持有者 我看到一些例子 他们都在 Model 类中使用
  • Android:禁用 1.5 纸杯蛋糕动画过渡

    长话短说 如何禁用活动之间的屏幕转换 如果您愿意的话 我们实现了自己的选项卡处理程序 现在它正在选项卡之间进行转换 这看起来很俗气 谢谢 Chris See android content Intent FLAG ACTIVITY NO A
  • 如何在flutter上关注android tv应用程序中的列表视图项目

    我想在 flutter 中构建一个 android 电视应用程序 几乎所有事情都已完成 但一个问题是我无法集中注意力 例如一些弹出效果或边框更改任何告诉用户您现在正在使用此项目的内容 我们在列表视图中迭代的项目 我想要在应用程序中看到的图像
  • 如何以编程方式设置带有密码的屏幕锁定?

    有没有人可以帮我设置密码以锁定屏幕 谢谢 在您的应用程序中使用此代码 它对我有用 DevicePolicyManager devicePolicyManager DevicePolicyManager getSystemService Co
  • Android:适合SystemWindows和换行符干扰bottomSheets

    我发现如果父布局包含android fitsSystemWindows true 当发生与视图相关的操作时 它会干扰我的 BottomSheets 定位 具体来说 我遇到的是 文本视图中的换行符将触发底页偏移系统 通知栏的高度 换行符 fi
  • Android Studio-公司域名

    在Android Studio中 当您创建新项目时 系统会提示您输入域名 我已经知道您可以制作一个 但是如果您想在 Google Play 商店上分发您的应用程序怎么办 即使我永远不会使用我的域 我是否需要购买一个网络域来分发我的应用程序

随机推荐

  • 使用 selenium 和 python 进行网页抓取 - 包含文本的 xpath

    我会尽力让它变得很短 我正在尝试单击通过网站搜索得出的产品 基本上有一个匹配产品的列表 我想单击第一个包含我在标题中搜索的产品名称的产品 我将发布该网站的链接 以便您可以检查其 DOM 结构 在这种情况下 许多都包含我的查询字符串 我只想单
  • toString() 是否定义为返回 java.lang.String ?

    Consider String foo s toString 对于一个非null java lang String实例s 这是定义为返回自身 还是取决于特定的 Java 实现 出于兴趣 是否进行了 深层复制 检查我的 JDK 源代码证实了这
  • 计算图像中某个区域的平均颜色

    目标是在图像顶部放置标题 并将文本颜色设置为与其所在背景形成对比的颜色 为此 我希望计算下图中红色矩形内区域的平均颜色 扩展于邦佐的回答 a 10831158 这是一个示例命令 convert Y82IirS jpg resize 1x1
  • Android 自定义 ActionBar 与搜索视图

    我在我的 Android 应用程序中使用自定义 ActionBar 库 我想显示一个 searchView 但找不到任何解决方案 我正在图书馆工作 https github com johannilsson android actionba
  • IDisposable 对象的依赖注入和生命周期

    我正在尝试使用依赖注入方法 使用 Ninject 开发一个库 并且我可能由于我的设计不正确而感到某种困惑 综上所述 我的设计思路是 A parent对象有一个common object A parent对象使用一些可变数量的child对象
  • 框架比较和开销

    我正在开发一款使用 Zend 框架开发的 Facebook 游戏 现在我没有太多的流量 并且已经看到相当多的数据使用 CPU 时间 其实我不太擅长Zend 我擅长从头开始编写 PHP 和 JS 代码 所以 我很好奇Zend框架的性能 因为我
  • 如何使用 linq toEntity 读取 UTF 8 编码的字符串

    我正在尝试阅读石灰调查 http www limesurvey org 使用 Linq to 实体的表 我的问题是 LimeSurvey 以 UTF8 存储字符串 而 Net 不喜欢它 那么 我有一个简单的函数来列出我的所有调查 我如何告诉
  • Matlab中如何获取直方图数据

    众所周知 Matlab 中的 hist 函数绘制数组的直方图 我需要知道每个垃圾箱的数值 请问你能帮帮我吗 thanks 指定输出hist http www mathworks com access helpdesk help techdo
  • 如何通过flask.Blueprint.route装饰器传递类的自身?

    我正在使用 Flask 和 Python 2 7 编写网站的后端 但遇到了一些问题 我喜欢使用类来封装我的函数 它使我的事情变得整洁并帮助我保持一切模块化 不过 我遇到的一个问题是 flask 用于路由的装饰器不保留 self 变量 我使用
  • 普通 JavaScript 中的 jqueryposition()

    我有以下代码行 var newLeftPos span s i position left parseInt span s i css width 10 它在 ie6 及更高版本中工作得很好 但我还需要让它在 ie5 5 中工作 现在我们不
  • 使用 Redux 获取 Widget 树外部的更新状态

    是否可以从 Widget 树之外的 Store 获取最新状态 在 Provider 中 您可以通过像这样调用 Provider 轻松做到这一点 并且如果有任何更改 状态将更新 Provider of
  • 为什么 MSBuild 将 *.XmlSerializers.dll 程序集放在已发布的 Web 应用程序的根文件夹中?

    我有一个构建过程 它采用我的 VS 2008 NET 2 0 ASP NET 项目并使用 MSBuild 构建它 该项目包含 ASPX 文件和一个 Web 服务 并且还连接到另一个 Web 服务 一切似乎都运行良好 除了 MSBuild 将
  • c# xml序列化不写null

    当我序列化一个包含可为 null DateTime 的 C 对象时 有没有办法将 null 值保留在 xml 文件之外 而不是让
  • SFINAE:static_assert 与 std::enable_if

    是否存在以下缺点 建议 句法 template lt typename T gt void f static assert std is same lt T int gt value 而不是 SFINAE 看起来像拐杖 template l
  • 使用“随机”键反序列化 JSON

    我正在尝试反序列化此 Json 代码 hotkeyOptions autoSwitchHotkeyPreset true currentHotkeySetName Paladin hotkeySets Newbie F10 useObjec
  • 添加引号到 CSV 导出

    我正在使用以下命令将数据导出到 CSV 文件fputcsv 我有正在写入的字符串 但是我要求数据用双引号引起来 foreach orderDetails lines as line fputcsv orderImportCsv line 在
  • 如何使用 html5 音频标签在 Android 上使用 PhoneGap 播放本地 mp3?

    我正在使用phonegap 上的Android SDK v19 在Android 4 4 上进行部署 我在与我的 index html 文件相同的文件夹中有一个 mp3 文件 我想使用 html5 音频标签来播放它
  • 如何在 ASP.NET Core 的 Razor Pages 中设置全局变量?

    我想检查浏览器是否是 IE 并在 razor 页面中执行某些操作 我刚刚在剃刀页面中创建了一个函数来做到这一点 不过 我认为在每个razor页面中使用检查浏览器是否为IE的功能是多余的 对于独立用户 我只需要检查一次并设置一个全局变量IsI
  • 如何在 C# 命令中使用 LIKE 运算符?

    我需要将字符串插入 Sql 命令 search CommandText SELECT FROM Contacts WHERE Name like person 正确的使用方法是什么LIKE在命令中 应该 SELECT FROM Contac
  • 实例化新 Android Fragment 的最佳实践

    我见过在应用程序中实例化新片段的两种一般做法 Fragment newFragment new MyFragment and Fragment newFragment MyFragment newInstance 第二个选项使用静态方法ne