对在应用程序中使用Fragments感到困惑

时间:2013-01-05 20:47:44

标签: android android-fragments

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

据我所知,Fragments只能用于我们想要重用的东西。任何建议都表示赞赏。

6 个答案:

答案 0 :(得分:11)

Fragments可用于创建动态和多窗格用户界面,因此非常适合具有更多屏幕空间的平板电脑。当然,在手机上情况稍有不同,你有一个更小的空间可以玩,有时只是为了让一个Activity适合屏幕而不用担心包含多个{{1 }}

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

使用示例如下图所示(摘自Android开发者网站) Fragments across Tablet and Phone

这说明了FragmentsManager的灵活性,它可以在平板电脑上占据同一个屏幕,在手机上切换到类似活动的格式。正是这种力量使FragmentsFragment更具优势。

很明显,在灵活性方面切换到Activity定位解决方案是有好处的,但您的原始问题表明您只针对手机,而且只是纵向定位。

拥有Fragment已存在的应用程序,假设它是您满意的解决方案,并具有良好的可用性,我会说没有理由切换到Activities(除非你正在寻找挑战或有空闲时间并且想要修补一剂。虽然存在优势,但强烈的变化(如添加碎片)可能会在应用程序中引入错误并影响用户体验(至少在短期内)。

从长远来看,如果您考虑将平板电脑支持放入折叠或想要使用横向方向,那么最好开始考虑使用Fragments来做什么>改善体验,并将其与手机应用程序的当前流程集成。

否则,您创建的当前解决方案将绰绰有余,只要您的客户群能够轻松接收,我认为没有理由改变

当然,对于未来的项目,或者是时候刷新当前项目的UI,无法熟悉Fragment API

值得指出的是,Fragments仅支持Android 3.0(API级别11),为支持早期设备,您需要在安装中找到 Android支持包 。因此,如果您当前的应用程序以2.x设备为目标,我会坚持使用基于活动的方法,为了简单和.apk大小,除非转移到本机API级别(如Android 3.0+)。 这是个人偏好,但最终原始问题的答案将归结为您的个人偏好。

答案 1 :(得分:4)

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

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

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

我相信通过跳过Fragments,从长远来看,你的开发任务实际上要困难得多。

答案 2 :(得分:3)

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

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

答案 3 :(得分:2)

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

如果是活动:

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

    1. 传递数据就像从FragmentManager获取片段实例并在其上调用方法一样简单;
    2. 无需实施Parcelable;
    3. 您可以在包含所有片段的活动中保存对“重”资源的引用,并仅初始化/释放它们一次(不需要为每个片段初始化/发布)。
    4. 此外,Fragment的实例比Activity的实例更轻量级,并且需要更少的时间和资源来初始化/恢复。

      通常,当您使用片段时,UI组件之间的交互更清晰,更优雅,更容易实现。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

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

  1. 想要一个平板电脑版
  2. 希望将ViewPageIndicatorViewPager与高级视图一起使用
  3. 这些是使用片段的最令人信服的理由。

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

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