11

正如 Android 文档所述:“活动是用户可以做的单一的、专注的事情。”

然而,使用 Fragments,我们将能够在Reto Meier 建议的同一个 Activity 中做许多“事情” 。他的建议是用同一 Activity 中的内容片段替换选择片段(“在我们的代码中,这会产生两难”一节)。

可以说我的应用程序“有点”复杂,有很多活动,有一个复杂的导航树,并且在设计时考虑了“用户可以做的单一、集中的事情”原则。

可以说现在我必须使其适应片段和大屏幕......而且我不想创建第二个应用程序,在一个应用程序中也没有两个完全不同的逻辑(一个用于手机,另一个用于表格)。

我应该有一个 Activity 来管理所有应用程序片段和片段事务吗?就像上面的 Retro Meier 建议一样。这是推荐的路径吗?从而打破活动的“用户可以做的单一、专注的事情”原则?

还是我错过了什么?我希望 ;)

顺便说一句,我认为 Fragments 看起来很棒,但从我目前所见,只有当您从头开始创建应用程序时。因为让应用程序与手机和平板电脑兼容看起来有点乏味。希望是错的:)


Dianne Hackborn 已经回答(感谢链接 mgv):

您可以将整个应用程序放在一个活动中,在该活动中随着片段结构的状态变化而更改

因此,Activity 成为一种容器,您可以在其中插入 Fragment。我喜欢这种方法,但是......在我的应用程序中,有大约 30 种不同的操作可用,每个操作都需要执行大约 2 到 4 个屏幕步骤(表单和选择列表),它们都不同,并且还有导航限制。它适用于活动,每个活动都处理一个屏幕/步骤行为。

因此,为了移植到 Fragments,我应该将每个屏幕逻辑移动到 Fragments,并将活动用作每个操作的容器。因此,让活动作为管理每个操作的片段之间导航的活动,对吗?看起来适应长时间的应用程序会很痛苦。:(

当前的 Activity 定义应该会有所改变。:)

4

1 回答 1

6

我应该有一个 Activity 来管理所有应用程序片段和片段事务吗?

这是不可能抽象地回答的。但是,即使在基于片段的世界中,大多数应用程序也会有多个活动。其中一些是为了适应较小的屏幕尺寸,每个活动往往是一个片段。其中一些是框架需要的(例如,继承自PreferenceActivity)。而且,其中一些将通过 GUI 设计。

从而打破活动的“用户可以做的单一、专注的事情”原则?

这部分文档是在 2008 年编写的,可能更早。如果片段当时存在,我想文档会说明片段是“用户可以做的单一、集中的事情”,活动充当编排层,确定哪些片段在什么情况下可见。

文档不会在所有地方都更新以反映片段,即使更新,也需要一些时间。对于 2011 年的剩余时间,您至少需要执行自己的 2008 年指令翻译,以将它们转换为 2011 年基于片段的 UI。

可以说现在我必须使其适应片段和大屏幕......而且我不想创建第二个应用程序,在一个应用程序中也没有两个完全不同的逻辑(一个用于手机,另一个用于表格)。

我不知道您认为“完全不同的逻辑”是什么。在基于片段的应用程序中,您的大部分业务逻辑将在片段本身中。活动再次充当编排层,确定哪些片段应该可见并协调事件处理。后者会比以前更复杂一些,因为有时单击列表中的项目会弹出一个新片段,有时单击列表中的项目会启动新活动,具体取决于屏幕大小。

还是我错过了什么?

老实说,您的问题缺少足够的具体性,无法合理回答。

于 2011-04-19T15:55:37.950 回答