片段和片段活动之间的区别是什么?

我的问题是,除了明显的遗传差异之外,FragmentFragmentActivity之间的主要差异是什么?每个职业最适合什么样的场景?我试图理解为什么这两个类都存在。

88506 次浏览

片段活动是我们经典的带有片段支持的活动,仅此而已。因此,当一个片段附加到活动时,就需要片段活动。

Well Fragment 是一个很好的组件,它可以复制 Activity 的基本行为,但仍然不是像 Activity 那样的独立应用程序组件,需要附加到 Activity 才能工作。

查看 给你了解更多细节

一个片段活动是一个包含片段的特别活动。 在这几个字里,我已经向你们解释了一个主要的变化,在 android 3.0(HoneyComb)中,android 团队已经在 android sdk 中插入了这个变化。

有了这些新概念,您的代码和布局片段变得更加灵活和可维护。如果你在谷歌上搜索有很多例子。

FragmentActivity的一部分,它包括:

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

Fragment必须始终嵌入在 Activity中。

在 HoneyComb (3.0)之前,Fragments不是 API 的一部分。如果您希望在针对 HoneyComb 之前的平台版本的应用程序中使用 Fragments,那么您需要将 支援计划添加到您的项目中,并使用 FragmentActivity来保存您的 FragmentsFragmentActivity类有一个用于处理 Fragments的 API,而 HoneyComb 之前的 Activity类没有。

如果您的项目只针对 HoneyComb 或更新的版本,那么您应该使用 Activity而不是 FragmentActivity来保存 Fragments

一些细节:

Activity一起使用 android.app.Fragment。与 FragmentActivity一起使用 android.support.v4.app.Fragment。不要将支持包 Fragment添加到 Activity中,因为它会引发异常。

需要注意的一点是: FragmentManagerLoaderManager都有单独的片段活动支持版本:

如果在 Activity(HoneyComb 和 up)中使用 Fragment,请调用

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

如果你正在使用 FragmentActivity中的 Fragment(在 HoneyComb 之前) ,请拨打:

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

所以,不要可以

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

或者

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

同样有用的是,虽然片段必须嵌入到 Activity中,但它不必成为 Activity布局的一部分。它可以被用作活动的一个不可见的工作者,没有自己的 UI。

可以将 FragmentActivity 看作是一个常规的 Activity 类,它可以支持片段。在蜂巢之前,活动类不能直接支持片段,因此在使用片段的活动中需要这样做。

如果您的目标发行版是蜂巢和以上您可以扩展活动而不是。

还有一个片段被认为是一个“子活动”。它不能没有活动而存在。总是把一个片段想象成一个子活动,那么你就应该是好的。因此,活动将是父级,片段是子级的符号关系。