Android - 活动与 FragmentActivity? [复制]

Posted

技术标签:

【中文标题】Android - 活动与 FragmentActivity? [复制]【英文标题】:Android - Activity vs FragmentActivity? [duplicate] 【发布时间】:2013-02-25 10:40:50 【问题描述】:

我是 android 新手。我想构建一个标签格式的应用程序。我发现许多使用了Activity 的文档。在很多情况下也使用了FragmentActivity。我不确定哪个会更好。请建议我应该使用Activity 还是FragmentActivity 以标签格式开始开发?

【问题讨论】:

【参考方案1】:

ianhanniballake is right。您可以从FragmentActivity 获得Activity 的所有功能。事实上,FragmentActivity 的功能更多。

使用FragmentActivity,您可以轻松构建tab and swap 格式。对于每个选项卡,您可以使用不同的FragmentFragments 可重复使用)。因此,对于任何FragmentActivity,您都可以重复使用相同的Fragment

您仍然可以将Activity 用于单个页面,例如列出某些内容并在下一页中编辑列表的元素。

如果您使用android.app.Fragment,请记住使用Activity;如果您使用的是android.support.v4.app.Fragment,请使用FragmentActivity。永远不要将android.support.v4.app.Fragment 附加到android.app.Activity,因为这会导致抛出异常。

【讨论】:

仅供参考,我在这里找到了一些关于 Fragment Android 的其他语言的很好的讨论 Fragment trong Android 但请参阅 @ianhanniballake 的回答:除非针对 API 11 之前的 API,您可以使用 Activity 而不是 FragmentActivity,并且仍然可以访问 Fragments; this 答案并没有完全这么说(尽管最后一段暗示了这一点)。 我们知道,我们项目中大多有一个BaseActivity,其他所有Activity都会扩展它。但是说到FragmentActivity,我们做不到。所以即使在tab的情况下我也不使用FragmentActivity。【参考方案2】:

FragmentActivity 为您提供Activity 的所有功能以及使用Fragments 的能力,这在许多情况下非常有用,尤其是在使用ActionBar 时,这是在安卓。

如果您针对 Honeycomb (v11) 或更高版本的设备,那么您可以使用 Activity 并使用 v11 中引入的原生 Fragments,而不会出现问题。 FragmentActivity 是专门作为 Support Library 的一部分构建的,用于将其中一些有用的功能(例如片段)反向移植回旧设备。

我还应该指出,您可能会发现 Backward Compatibility - Implementing Tabs 培训对您未来很有帮助。

【讨论】:

@A--C - 我已经编辑了我的答案 - 你说得对,API 11+ 设备可以使用本机 Fragments 和普通的 Activity 类。 我要挑战API11+中普通Activity类可以用作Fragment的断言。这似乎在 KitKat 中发生了变化。见android.googlesource.com/platform/frameworks/base.git/+/… @cmarcelk - 不确定“普通的 Activity 类可以用作片段”是什么意思 - 我说 android.app.Activityandroid.app.Fragment 一起使用,而不是它们可以互换。 @cmarcelk in API11+ Activity 可以访问片段; FragmentActivity 不再需要。 Activity 或 FragmentActivity 本身不是 Fragments。【参考方案3】:

如果您在最近的 ADT 包中使用 Eclipse“新建 Android 项目”向导,您将自动将选项卡实现为片段。这使您的应用程序在将来更容易转换为平板电脑格式。

对于简单的单屏布局,您仍然可以使用Activity

【讨论】:

以上是关于Android - 活动与 FragmentActivity? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

android.os.TransactionTooLargeException 与作物活动

Android四大组件之Activity(活动)及其布局的创建与加载布局

Android - 活动构造函数与 onCreate

Android:导航返回使用与工具栏相同的活动

在android中使用底部导航的最佳实践:活动与片段

与来自服务的活动(LocalService)通信 - Android 最佳实践