android - 进退两难 : when to use Fragments vs Activities:

标签 android android-fragments android-activity architecture

我知道 Activities旨在代表我的应用程序的单个屏幕,而 Fragments设计为可重用的 UI 布局,其中嵌入了逻辑。

直到不久前,我开发了一个应用程序,因为它说应该开发它们。 我创建了一个 Activity代表我的应用程序的屏幕并使用 fragment 为ViewPagerGoogle Maps .我很少创建 ListFragment或其他可以多次重复使用的 UI。

最近我偶然发现了一个仅包含 2 个 Activities 的项目一个是 SettingsActivity另一个是MainActivity . MainActivity 的布局填充了许多隐藏的全屏 UI fragment ,并且只显示了一个。在 Activity逻辑有很多FragmentTransitions在应用程序的不同屏幕之间。

我喜欢这种方法的原因是因为应用程序使用了 ActionBar ,它保持不变,不会随着屏幕切换动画而移动,这就是 Activity 发生的情况交换。这会给那些屏幕过渡带来更流畅的感觉。

所以我想我要问的是分享你目前关于这个主题的开发方式,我知道它乍一看可能看起来像是一个基于意见的问题,但我认为它是一个 Android 设计和架构问题......不是真正基于意见的。

更新 (01.05.2014):SquareEric Burke 的演讲之后,(我不得不说这是一个很棒的演讲为安卓开发者提供了很多有用的工具。而且我与 Square 没有任何关系)

http://www.infoq.com/presentations/Android-Design/

根据我过去几个月的个人经验,我发现构建我的应用程序的最佳方式是创建一组 fragment ,这些 fragment 代表应用程序中的流程并呈现所有这些 fragment 合二为一Activity .所以基本上你会有相同数量的Activities在您的应用程序中作为流数。 这样, Action 栏在所有流程的屏幕上保持不变,但在更改流程时重新创建,这很有意义。正如 Eric Burke 所说,正如我也意识到的那样,使用尽可能少的哲学 Activities as possible 并不适用于所有情况,因为它会在他所谓的“上帝” Activity 中造成困惑。

最佳答案

专家会告诉你:“当我看到 UI 时,我就会知道是使用 Activity 还是 Fragment”。一开始这没有任何意义,但随着时间的推移,您实际上将能够判断您是否需要Fragment

我发现有一个很好的做法对我很有帮助。当我试图向我的女儿解释一些事情时,我突然想到了。

即,想象一个代表屏幕的框。您可以在此框中加载另一个屏幕吗?如果您使用新盒子,您是否必须从第一个盒子中复制多个项目?如果答案是肯定的,那么您应该使用 Fragments,因为根 Activity 可以保存所有重复的元素以节省您创建它们的时间,并且您可以简单地替换部分盒子。

但是不要忘记你总是需要一个盒子容器(Activity),否则你的零件会被分散。所以一个盒子里面有零件。

注意不要误用盒子。 Android UX 专家建议(你可以在 YouTube 上找到它们)我们应该显式加载另一个 Activity,而不是使用 Fragment(比如当我们处理具有类别)。一旦您对 Fragments 感到满意,您就可以观看他们的所有视频。更重要的是,它们是强制性 Material 。

您现在能否查看您的 UI 并确定您需要 Activity 还是 Fragment?你有没有新的视角?我想你做到了。

关于android - 进退两难 : when to use Fragments vs Activities:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20306091/

相关文章:

Android Studio 打开 fragment 但不更改底部导航菜单状态

android - 如何用 Fragment 替换 ViewPager

java - 为什么 Fragment 不能是公共(public)静态类?

android - android.os.Messenger 和 android.os.Handler 的旋转变化问题

java - 在连接实时设备的情况下进入 Eclipse 时,Java 开源 View 不正确

java - Android Manifest 合并失败

android - 如果 Activity 布局更改,配置更改后恢复 Fragment 状态

android - Android 中的 Activity 交互

android - 以编程方式从 android 转换到 miracast 接收器的步骤

android - Google map v2 淡入效果