Fragment和FragmentActivity有什么区别?

时间:2012-05-15 21:45:18

标签: android android-fragments android-fragmentactivity

我的问题除了明显的继承差异外,FragmentFragmentActivity之间的主要区别是什么?每个班级最适合哪些场景?我试图理解为什么这两个类都存在......

4 个答案:

答案 0 :(得分:272)

FragmentActivity的一部分,其中包含:

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

Fragment必须始终嵌入Activity

Fragments不属于HoneyComb(3.0)之前的API。如果您想在针对HoneyComb之前的平台版本的应用中使用Fragments,则需要将Support Package添加到您的项目中,并使用FragmentActivity来保留您的FragmentsFragmentActivity类具有用于处理Fragments的API,而在HoneyComb之前的Activity类则没有。Activity类。

如果您的项目仅定位到HoneyComb或更新版本,则应使用FragmentActivity而不是Fragments来保留android.app.Fragment

一些细节:

Activityandroid.support.v4.app.Fragment一起使用。将FragmentActivityFragment一起使用。不要将支持包Activity添加到FragmentManager,因为它会导致抛出异常。

要注意的事项:LoaderManagerFragment对FragmentActivity有单独的支持版本:

如果您在Activity(HoneyComb及以上版本)中使用getFragmentManager(),请致电

  • android.app.FragmentManager获取getLoaderManager()
  • android.app.LoaderManager获取Fragment

如果您在FragmentActivity(蜜蜂预售前)中使用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,但它不必是{{1}}布局的一部分。它可以用作活动的隐形工作者,没有自己的UI。

答案 1 :(得分:14)

FragmentActivity是我们经典的具有片段支持的Activity,仅此而已。因此,当Fragment将附加到Activity时,需要FragmentActivity。

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

查看here了解更多详情

答案 2 :(得分:8)

将FragmentActivity视为可以支持Fragments的常规Activity类。在蜂窝之前,活动类不能直接使用片段,因此在使用片段的活动中需要这样做。

如果你的目标发行版是Honeycomb,那么你可以延伸到Activity。

此外,片段也被视为“子活动”。没有活动就不可能存在。总是将片段视为子活动,你应该做得很好。因此,活动将是父类,而片段是子类的符号关系。

答案 3 :(得分:1)

FragmentActivity是一个包含Fragment的临时活动。 在这几句话中我已经解释了一个主要的重要变化,用android 3.0(HoneyComb),android团队已经插入了android sdk。

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