Android 一个活动和所有其他片段

Android 一个活动和所有其他片段,android,android-layout,android-activity,android-fragments,android-lifecycle,Android,Android Layout,Android Activity,Android Fragments,Android Lifecycle,我正在考虑用活动实现一个屏幕,用片段和管理活动中的所有片段 这是个好主意吗?我的答案是不,但我还是想更清楚地了解这个想法 这个想法的利弊是什么? 注意: 请不要给我碎片和活动的链接 编辑: 以下是有关片段和活动的一些信息: 优点: 片段将作为子活动与活动一起使用 片段不是活动的替代品 片段意味着可重用性(需要知道以何种方式可以实现可重用性) 片段是编写支持平板电脑和手机的代码的最佳方式 缺点: 我们需要实现接口来从片段中获取数据 对于dialog,我们必须走很长的路才能展示它 如果我们不考虑使用

我正在考虑用
活动
实现一个屏幕,用
片段
管理活动中的所有片段

这是个好主意吗?我的答案是,但我还是想更清楚地了解这个想法

这个想法的利弊是什么?

注意:

请不要给我碎片和活动的链接

编辑:

以下是有关片段和活动的一些信息:

优点:

  • 片段将作为子活动与活动一起使用
  • 片段不是活动的替代品
  • 片段意味着可重用性(需要知道以何种方式可以实现可重用性)
  • 片段是编写支持平板电脑和手机的代码的最佳方式
  • 缺点:

  • 我们需要实现接口来从片段中获取数据
  • 对于dialog,我们必须走很长的路才能展示它
  • 如果我们不考虑使用平板电脑,为什么要使用碎片? 活动和片段之间的开始时间差是多少?

    优点:

    • 可以通过xml布局创建一个可由多个屏幕大小和方向使用的界面
    缺点:

    • 在活动中需要更复杂的代码

    我认为这是一个好主意,因为根据当前的屏幕大小和方向使用不同的xml布局可以使应用程序更可用,并且如果您计划为手机和平板电脑发布应用程序,则可以减少发布应用程序多个版本的需要。如果你的应用程序永远不会被平板电脑和手机同时使用,那么它可能不值得这么麻烦。

    我认为不使用单一活动方法的最重要原因是可以利用活动生命周期。活动包含应用程序特定部分的上下文行为,片段补充了该行为。能够利用活动生命周期中的可覆盖步骤有助于通过
    onPause
    onResume
    等方法将一个活动的行为与另一个活动的行为区分开来。此生命周期还允许您返回到以前的上下文。使用单活动方法,一旦你留下一个片段,你就必须创建一个机制来返回它。

    这取决于你正在创建的应用程序。我已经用这两种方法创建了几个应用程序,不能说一种方法总是比另一种好。我创建的最新应用程序使用了单一的
    活动
    方法和Facebook风格的导航。从导航列表中选择项目时,我会更新单个
    片段
    容器以显示该部分

    也就是说,拥有一个
    活动也会带来很多复杂性。假设您有一个编辑表单,对于用户需要选择或创建的某些项目,需要它们转到新屏幕。对于活动,我们只需使用
    startActivityForResult
    调用新屏幕,但是如果使用
    Fragments
    则不存在这样的情况,因此您最终将值存储在
    活动上
    ,并让主编辑片段检查
    活动
    ,以查看数据是否已被选中并应显示给用户

    Aravind所说的坚持单一的
    活动
    类型也是正确的,但并不是真正的限制。您的活动将是一个碎片活动,只要您不需要
    地图视图
    ,就没有真正的限制。如果您确实想显示地图,可以这样做,但您需要修改Android兼容性库,使其具有
    FragmentActivity
    extend
    MapActivity
    ,或者使用公共可用的

    最终,我所认识的大多数开发人员都选择了“一个
    活动”
    的路线,他们又回到了多个活动中,以简化他们的代码。就用户界面而言,在平板电脑上,您有时会被一个
    活动所束缚,而这仅仅是为了实现您的设计师所设计的疯狂交互:)

    --编辑--

    谷歌终于向兼容性库发布了
    MapFragment
    ,这样你就不必再使用android-support-v4-googlemaps黑客了。请在此处阅读有关更新的信息:

    --编辑2--


    我刚刚读了这篇关于碎片的现代(2017)状态的博文,并记住了这个古老的答案。我想与大家分享:

    这取决于你的应用程序的设计布局。假设您在设计布局中使用ActionBar中的选项卡,则在应用程序的单个活动中,可以在单击选项卡时更改片段。现在您有了一个活动,假设ActionBar中有三个选项卡,并且片段提供了选项卡的视图,这使得管理plus变得容易,这也是可行的。 因此,这一切都取决于你的应用程序的设计方案以及你如何决定为其构建

    专业人士 您可以从单个活动控制片段,因为所有片段都是相互独立的。片段有自己的生命周期(
    onPause
    onCreate
    onStart
    …)。通过具有生命周期,片段可以独立地响应事件,通过saveInstanceState保存其状态,并返回(例如,在来电后恢复时或用户单击“上一步”按钮时)

    欺骗
  • 在您的活动代码中创建复杂性
  • 您必须管理片段的顺序

  • 尽管如此,这还是一个不错的主意,好像你需要创建一个应用程序,在其中你想要显示多个视图。通过这个想法,您将能够在一个视图中查看多个片段。

    我即将完成一个项目(开发期为5个月),该项目有1个活动和17个片段,所有片段都是完整的