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
extendMapActivity
,或者使用公共可用的
最终,我所认识的大多数开发人员都选择了“一个活动”
的路线,他们又回到了多个活动中,以简化他们的代码。就用户界面而言,在平板电脑上,您有时会被一个活动所束缚,而这仅仅是为了实现您的设计师所设计的疯狂交互:)
--编辑--
谷歌终于向兼容性库发布了MapFragment
,这样你就不必再使用android-support-v4-googlemaps黑客了。请在此处阅读有关更新的信息:
--编辑2--
我刚刚读了这篇关于碎片的现代(2017)状态的博文,并记住了这个古老的答案。我想与大家分享:这取决于你的应用程序的设计布局。假设您在设计布局中使用ActionBar中的选项卡,则在应用程序的单个活动中,可以在单击选项卡时更改片段。现在您有了一个活动,假设ActionBar中有三个选项卡,并且片段提供了选项卡的视图,这使得管理plus变得容易,这也是可行的。
因此,这一切都取决于你的应用程序的设计方案以及你如何决定为其构建 专业人士
您可以从单个活动控制片段,因为所有片段都是相互独立的。片段有自己的生命周期(onPause
,onCreate
,onStart
…)。通过具有生命周期,片段可以独立地响应事件,通过saveInstanceState保存其状态,并返回(例如,在来电后恢复时或用户单击“上一步”按钮时)
欺骗
在您的活动代码中创建复杂性
您必须管理片段的顺序
尽管如此,这还是一个不错的主意,好像你需要创建一个应用程序,在其中你想要显示多个视图。通过这个想法,您将能够在一个视图中查看多个片段。我即将完成一个项目(开发期为5个月),该项目有1个活动和17个片段,所有片段都是完整的