5

我有一个成熟的应用程序,它不是使用Fragments. 我的困惑是我应该将其更改为 haveFragments而不是 Activities. 我想说的是,我在我的应用程序中只使用纵向方向,并且它是构建的,记住只有手机,而不是平板电脑。所以我的问题是,如果我改变 app 的整个结构并使用Fragments.

据我所知,只有在我们想重用某些东西时才应该使用片段。任何建议表示赞赏。

4

6 回答 6

11

Fragments可用于创建动态和多窗格的用户界面,因此非常适合需要使用更多屏幕空间的平板电脑。当然,在手机上情况会有所不同,您可以玩的空间要小得多,有时只需要将一个Activity适配到屏幕上而不用担心包含多个Fragments.

Fragments非常适合动态界面,有助于平板电脑和手机之间的兼容性。它们也能够比活动更好地相互通信,因此即使在仅电话设置中使用它们也肯定有优势。(请参阅FragmentsManager它们可用于的一些功能)

下图说明了一个使用示例(取自 Android 开发者网站) 跨平板电脑和手机的片段

这说明了 的灵活性Fragments,它在平板电脑上可以占据同一屏幕,在手机上切换到更像 Activity 的格式。正是这种力量,使之FragmentActivity.

很明显,在灵活性方面切换到定向解决方案有优势Fragment,但您最初的问题表明您仅针对手机,并且仅针对纵向。

拥有一个已经存在的应用程序,Activities只要它是您满意的解决方案,并且具有良好的可用性我会说没有理由切换到Fragments(除非您正在寻找挑战或有一些空闲时间和喜欢修补匠)。虽然存在优势,但像添加片段这样的剧烈变化可能会在您的应用程序中引入错误并影响用户体验(至少在短期内)。

从长远来看,如果您正在考虑将平板电脑支持纳入折叠屏或想要使用横向,那么开始考虑可以做些什么Fragments改善体验可能是个好主意,并将其与当前的您的电话应用程序的流程。

否则,您创建的当前解决方案将绰绰有余,只要它受到您的客户群的好评,我认为没有理由改变

当然,为将来的项目熟悉 Fragment API,或者在需要刷新当前项目的 UI 的情况下,也没有什么坏处。

值得指出的是,Fragments只有 Android 3.0(API 级别 11)本机支持,要支持早期设备,您需要安装中的Android 支持包。因此,如果您当前的应用程序以 2.x 设备为目标,为了简单起见和 .apk 大小,我会坚持使用基于 Activity 的方法,除非迁移到原生 API 级别(如 Android 3.0+)。这是个人喜好,最终对您最初问题的回答将归结为您的个人喜好。

于 2013-01-08T12:46:21.280 回答
4

将片段视为将代码模块化为可管理片段的一种方式。每个片段代表一小部分功能和 UI。这使您可以轻松地调整代码以适应不同的场景。

当然,您现在不打算支持平板电脑(无论您认为平板电脑用户会如何安装该应用程序),请考虑更大尺寸的 5-6 英寸设备以及将您的应用程序扩展到它们的潜力。最好提供您的应用到尽可能多的设备,最好的应用会为设备量身定制体验。

过渡到 Fragments 并不困难。取一小部分功能并将其移至 Fragment。然后你会看到新模式是多么容易和灵活。您不需要重写整个应用程序,因为活动和片段可以一起工作。

我相信,从长远来看,跳过 Fragments 确实会让你的开发任务变得更加困难。

于 2013-01-14T20:11:20.637 回答
3

如果您将来不打算支持平板电脑,请保持原样。当您将应用程序转换为片段时,您不会获得任何收益。

如果您启动一个新的应用程序,情况就不同了。如果将来需要支持其他形式因素,我会从一开始就使用片段,以便更加灵活。请注意,支持库中提供了该功能,因此您也可以在旧设备上使用它。

于 2013-01-06T07:36:02.640 回答
2

设置片段之间的交互比设置活动之间的交互更容易。

活动情况下:

  1. 您需要使用startActivityForResult()/ onActivityResult();
  2. 您的自定义类型必须实现Parcelable接口才能在活动之间传递;
  3. 当您的活动暂停/停止时,您必须释放所有资源。

如果是碎片:

  1. 传递数据就像从中获取片段实例FragmentManager并在其上调用方法一样简单;
  2. 无需执行Parcelable
  3. 您可以在包含所有片段的活动中保存对“重”资源的引用,并且只初始化/释放它们一次(不需要为每个片段初始化/释放)。

此外,实例Fragment比实例更轻量级,Activity初始化/恢复所需的时间和资源更少。

一般来说,当你使用 Fragment 时,你的 UI 组件之间的交互更干净、更优雅、更容易实现。

于 2013-01-14T13:59:16.080 回答
1

我刚刚将我的应用程序转换为使用片段,因为:

  1. 想要平板版
  2. 想要将ViewPageIndicatorViewPager与高级视图一起使用

这些是使用片段的最令人信服的理由。

这可能需要做更多的工作,但随着市场上出现更多平板电脑和快速采用率,也许值得考虑支持具有更好用户界面的平板电脑?

如果您真的不想这样做并且不需要使用高级视图进行视图分页,那么过度设计您的项目以使其使用片段来使用片段是没有意义的。您可能会争辩说您可能会了解它们,但是当您在下一个项目中使用它们时,您可以学习(这就是我所做的并且效果很好)。

于 2013-01-15T07:33:13.173 回答
1

就您的应用程序或任何应用程序而言,最好使用片段,它不会对您的应用程序造成伤害,并且还可以减轻您的负担,同时进一步扩展您的平板电脑应用程序。因此,最好从使用应用程序中的片段。

于 2013-01-11T08:53:26.093 回答