2

参考下图:

http://developer.android.com/guide/components/fragments.html

有人可以解释一下为什么谷歌建议在手机上使用 2 个单独的活动,在平板电脑上使用一个活动吗?如果我在活动 A 中有代码来管理片段 B(用于平板电脑),为什么我应该在活动 B 中为手机重复相同的代码?

似乎对于电话,我仍然可以使用 1 个活动(仅活动 A)并替换片段,这可以减少冗余代码吗?

谢谢。

4

3 回答 3

3

本质上,原因是手机很小。真的很小。微小的,事实上。

以电子邮件应用程序的经典场景为例。该场景中的两个片段是消息列表(片段 A)和消息内容(片段 B)。在有空间的平板电脑上,您可以将它们组合成一个活动,同时在屏幕上舒适地显示。但是,在手机上,您需要仔细管理屏幕空间,因此您应该将它们分为选择消息阶段(活动 A 显示片段 A)和阅读消息阶段(活动 B 显示片段 B )。

通过将它们开发为片段,类似于其他平台中的用户控件,您可以在平板电脑和手机上的相同代码库中使用相同的片段,从现有片段组成活动。

于 2012-11-08T15:33:10.933 回答
1

我明白你的意思。。

您可以使用片段容器并替换片段,为选择回调定义接口。谷歌就是这样做的,我猜对于那些来自活动世界的人来说可能更清楚。

于 2012-11-08T15:35:08.790 回答
0

Rejinderi 的解决方案应该有效。我认为无论是那个实现还是谷歌的例子都是一个合理的选择。这取决于您要达到的目标。

就个人而言,我更喜欢谷歌的例子,原因如下:

  1. 单独的活动意味着您使用活动回栈。在某些(大多数?)情况下,片段返回堆栈很好,但默认转换不同。出于用户体验的原因,您可能更喜欢其中一个。
  2. 如果您想捕获一个意图,可能不清楚为什么ActivityA要捕获JobB
  3. 以我的经验,FragmentB没有处理的逻辑FragmentA(有点)不同,将其分解为自己的活动有助于分离该逻辑,并使所有内容更具可读性。
  4. 菜单选项也可能发生变化。我再次发现逻辑的分离更加清晰。
于 2013-12-08T18:39:36.493 回答