Fragment 和 FragmentActivity 有什么区别?

2023-12-07

我的问题是除了明显的继承差异之外,两者之间的主要区别是什么Fragment and FragmentActivity?每个类别最适合什么场景?我试图了解为什么这两个类别存在......


A Fragment是一个的一部分Activity, 其中有:

  • 它自己的生命周期
  • 接收自己的输入事件
  • 可以添加或删除,而Activity在跑。

A Fragment必须始终嵌入到Activity.

Fragments在 HoneyComb (3.0) 之前不是 API 的一部分。如果你想使用Fragments在针对 HoneyComb 之前的平台版本的应用程序中,您需要添加支持包到您的项目并使用FragmentActivity握住你的Fragments. The FragmentActivity类有一个API用于处理Fragments,而ActivityHoneyComb 之前的 class 则不然。

如果您的项目仅针对 HoneyComb 或更新版本,您应该使用Activity并不是FragmentActivity握住你的Fragments.

一些细节:

Use android.app.Fragment with Activity. Use android.support.v4.app.Fragment with FragmentActivity。不添加支持包Fragment to an Activity因为它会导致抛出异常。

需要注意的一点是:FragmentManager and LoaderManagerFragmentActivity 有单独的支持版本:

如果您使用的是Fragment in an Activity(HoneyComb 及以上),致电

  • getFragmentManager() to get android.app.FragmentManager
  • getLoaderManager() to get android.app.LoaderManager

如果您正在使用Fragment in a FragmentActivity(HoneyComb 之前),请致电:

  • getSupportFragmentManager() to get android.support.v4.app.FragmentManager.
  • getSupportLoaderManager() to get android.support.v4.app.LoaderManager

so, don't do

//don't do this
myFragmentActivity.getLoaderManager(); 
//instead do this:
myFragmentActivity.getSupportLoaderManager();

or

//don't do this:
android.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager();
//instead do this:
android.support.v4.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager()

还需要知道的是,虽然片段必须嵌入到Activity它不一定是Activity布局。它可以用作活动的隐形工作人员,没有自己的 UI。

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

Fragment 和 FragmentActivity 有什么区别? 的相关文章

随机推荐

  • Laravel 和 MS SQL Server 数据库连接抛出错误“(3/3) QueryException 找不到驱动程序”

    Guys I tried lots of things mentioned in Stackoverflow and laracasts for this issue but none worked hence posting this i
  • UPDATE 语句处于“查询结束状态”

    我们最近升级了在 mysql 服务器版本 5 5 8 上运行的 mysql 数据库 升级后 有时我们会看到简单的升级语句需要 10 秒以上 当我查看进程列表时 它显示所有进程都处于 查询结束 状态 有谁对此有任何想法吗 UPDATE Acc
  • Angular2中如何动态添加克隆节点(相当于cloneNode)

    在 Angular2 中 在某些情况下我需要复制节点而不是移动它 该节点具有 angular2 属性 因此 cloneNode 不起作用 我该怎么做 什么不起作用 let el
  • 将 BSTR 从 C++ DLL 函数传递到 VB6 应用程序

    我的 VB6 应用程序中有以下代码 Private Declare Function FileGetParentFolder Lib Z FileIO dll ByVal path As String As String Output Ad
  • 在 SVN 中创建包含内部版本号和分支名称的文件

    目前我工作的地方没有大量的部署控制 虽然有一个长期计划来创建一个处理部署的构建脚本 但目前我们只是发布我们的解决方案 然后将它们复制到服务器 如果有一个文本文件或类似的文件包含修订号和分支名称 作为实时系统上当前运行的版本的日志 这将非常有
  • Windows 中 sys/mman.h 的等效项

    我在尝试在 Win64 上编译 C 代码时遇到问题 更具体地说 编译器找不到sys mman hheader 据我所知只能在 Unix 环境中找到 我已经知道这是处理内存分配的 我可以使用 Windows 的等效工具来移植代码 第一次尝试
  • Swift 通用协议函数参数

    这似乎对我有用 我想做的就是让Rule协议能够performRule在任何采用该规则协议的结构上 然后返回一个布尔值 但是 按照我的代码当前的方式 我无法访问performRule value value范围 我觉得我错过了一个重要的概念或
  • 轮询 I/O (MIPS)

    我正在尝试在 MIPS 中编写一个程序 该程序使用轮询从键盘读取字符 然后使用内置键盘和显示器 MMIO 模拟器显示它 不幸的是 我无法理解所使用的寄存器和控制位背后的概念 但一直试图从在线示例中找出答案 这是我到目前为止所写的内容 dat
  • 使用套接字通过 Tcp/IP 发送消息

    我正在尝试在客户端 服务器之间发送数据 数据看起来像 typedef Struct Message int id int message length char message str message 我在尝试着Write and Read
  • 当用户滚动离开时如何暂停 YouTube 嵌入

    我一直在尝试寻求帮助 以便在用户滚动离开时让视频暂停 我已经能够找到 html5 视频的帮助 但现在我还需要知道如何使用 youtube API 来实现同样的目的 我嵌入 YouTube 的 html 结构如下 div class ytub
  • HTML5 画布图像上的插图阴影

    我以前见过这个问题 但给出的答案是针对通过路径绘制的画布图像 但是我正在绘制图像 是否有可能创建一个inset shadow context shadowOffsetX 0 context shadowOffsetY 0 context s
  • 如何在不移动其他元素的情况下放大div

    我怎样才能停止这个 div 将所有元素移动到您选择特定价格的位置下方 要了解我在说什么 请查看此链接 查看价格表样式3在其下方 您可以看到 当您选择某个价格表时 下面的所有元素都会因弹出而移动 我希望能够使用此功能 但当然不能移动下面的所有
  • 多个单通道矩阵转换为单个多通道矩阵

    我正在使用带有矩阵的 opencv c api 我有 4 个单通道 Mat 我想将其合并为一个 4 通道矩阵 它基本上是我在 4 个矩阵中拥有的 rgba 通道 并且想要组合成一个 rgba 图像 矩阵 谁知道该怎么做 您可以使用简历 合并
  • DQL 选择具有一列 MAX 值的每一行

    使用 Symfony 2 和 Doctrine 我正在寻找一种方法来选择特定列中具有最大值的每一行 现在 我正在两个查询中执行此操作 一种获取表中列的最大值 然后我选择具有该值的行 我确信这可以通过一个查询来完成 搜索中 我发现了这个答案
  • 如何在 C# 中更改组合框的外观

    我尝试在 xaml 中将 ComboBox 背景 前景 borderbrush 设置为蓝色只是为了测试 但它仍然保持丑陋的灰色 我也尝试过使用资源字典 但它不想改变 这是我使用组合框的 XAML
  • Haskell - 在模式匹配中使用常量

    假设我有以下代码 文本在 lt gt 是简写 实际上不是代码的一部分 data A
  • matlab导入多张图像

    我有一组连续命名的 100 张 jpg 图像 我想将它们相加以获得单个图像 我已经看到答案了here 但它不跟我一起运行 发生了什么事 这是代码 im imread C Documents and Settings 1026175117 1
  • 如何从文件中读取位?

    我知道如何读取字节 x read number of bytes 但是如何读取 Python 中的位呢 我必须从二进制文件中仅读取 5 位 而不是 8 位 1 字节 有什么想法或方法吗 Python 一次只能读取一个字节 您需要读取一个完整
  • 无需按 Control 键即可选择多行

    我有一个网格视图 可以通过按控制键选择多行 是否可以在不按控制键的情况下实现相同的目的 由于 net 默认操作也会更新slectedrows你的datagridview你需要有一个数组来保留旧的选择 DataGridViewRow old
  • Fragment 和 FragmentActivity 有什么区别?

    我的问题是除了明显的继承差异之外 两者之间的主要区别是什么Fragment and FragmentActivity 每个类别最适合什么场景 我试图了解为什么这两个类别存在 A Fragment是一个的一部分Activity 其中有 它自己