我知道 Activities
旨在代表我的应用程序的单个屏幕,而 Fragments
设计为可重用的 UI 布局,其中嵌入了逻辑。
直到不久前,我开发了一个应用程序,因为它说应该开发它们。
我创建了一个 Activity
代表我的应用程序的屏幕并使用 fragment 为ViewPager
或 Google Maps
.我很少创建 ListFragment
或其他可以多次重复使用的 UI。
最近我偶然发现了一个仅包含 2 个 Activities
的项目一个是 SettingsActivity
另一个是MainActivity
. MainActivity
的布局填充了许多隐藏的全屏 UI fragment ,并且只显示了一个。在 Activity
逻辑有很多FragmentTransitions
在应用程序的不同屏幕之间。
我喜欢这种方法的原因是因为应用程序使用了 ActionBar
,它保持不变,不会随着屏幕切换动画而移动,这就是 Activity
发生的情况交换。这会给那些屏幕过渡带来更流畅的感觉。
所以我想我要问的是分享你目前关于这个主题的开发方式,我知道它乍一看可能看起来像是一个基于意见的问题,但我认为它是一个 Android 设计和架构问题......不是真正基于意见的。
更新 (01.05.2014): 继 Square 的 Eric 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/