当前位置: 首页 > 知识库问答 >
问题:

对活动进行分段或不分段-嵌套的片段。为什么我要使用一个以上的activity?

杨起运
2023-03-14

关于您应该使用活动还是使用片段的讨论很多。例如:

  • 到片断或不到片断
  • 一个activity和所有其他片段
  • 活动数与碎片数
  • 在Android应用程序中使用activity或片段

我发现的大多数讨论都是在Android4.2之前发布的。
在Android4.2中,Google发明了嵌套碎片。

因此,我实际上看不出有任何理由再使用一个以上的activity

fragment的早期阶段,它们应该被用于同时以舒适的方式支持平板电脑和智能手机的应用程序中。

例如,您有一个ListView,它可以在单击一个项目时打开一个详细的视图。在智能手机上,我们将替换列表视图并显示详细的视图。而Tablet可以同时显示两个视图而不是用detail视图替换列表。

现在,有了嵌套的片段之后,还有很多其他的可能性。如果您想使用一个activity,您可以将常规信息存储在activity中,并且每个片段都可以访问它。

除此之外,具有嵌套片断片断还可以为其子片断存储信息。

通过片断我可以轻松地重用视图,可以同时显示多个片断,并且可以轻松地从一个片断中形成一个对话框。这一切可能只需要我做一些复制和粘贴操作。

如果我使用activities来代替,那么我真的必须做很多修改才能完成这个任务。

我最近实现了一个应用程序,在这个应用程序中,我可以轻松地使用两个fragment-viewpager来获取真正漂亮和动态的信息(某种类型:今天的信息-昨天的信息)。在我看来,片断使我们的生活变得更加容易:)

问题:

  • 为什么要使用多个activity

您能提供一个好的例子,说明使用多个活动比使用片段更有意义吗?

  • 有没有什么好的示例,您别无选择,只能使用活动

我认为大多数像Maps、YouTube和co这样的大框架已经支持fragment。因此我们不必依赖于activities。如果您使用片断,那么处理NavigationBarTabhostsViewPagerActionBar也是相当容易的。

来自Udacity:

为什么不总是用大量的碎片来创造一个activity呢?

  1. 复杂性增加
  2. 更难的意图处理
  3. 难以读取、维护和测试
  4. 紧耦合风险
  5. 安全问题

共有1个答案

韦泳
2023-03-14

首先,我会同意您的观点,即只使用一个activity和嵌套片段就可以编写一个巨大的应用程序。这就是软件的乐趣--您可以使用各种方法来实现相同的功能。对我来说,使用多个活动的选择取决于我个人对封装、可重用性和可测试性的偏好。

如果我有一个可以在其他应用程序中重用的小部件,我就把它做成一个片段。例如,我的应用程序有一个“与服务器同步”按钮,我创建了一个自定义片段,使用进度条直观地显示同步过程。很容易想象另一个应用程序能够使用这个小部件,所以这就是我将它开发为一个片段的原因。

如果我在应用程序中切换任务,使得新任务在概念上独立于前一个任务,那么我将使用一个新的activity。举个例子,我的app的第一个页面要求你选择一个用户。一旦你点击了一个用户,我就把你送到该用户的主菜单。用户的主菜单显示在一个新的activity中。

现在让我们想象一个大型复杂的应用程序,以及一个开发人员团队来开发该应用程序。如果app可以被划分成单独的活动,那么从概念上来说,任务的划分是非常容易的。每个activity都是自己的沙箱,所以并行开发很简单,而且单元可测试。如果有任何共同的需求,团队仍然应该开发碎片并重用它们,当然。我应该补充一点,代码重用在软件开发中发生的频率不够高,但是如果做得好,应该会有很多可重用的片段。

现在假设是时候测试应用程序了。您的测试团队可以将每个activity视为自己的黑盒。这比一个依靠单个activity和成吨嵌套碎片的单个巨大app更容易测试。如果存在bug,这一点尤其重要。如果存在一个不明显的bug,至少我知道bug的范围仅限于众多activity中的一个。

总而言之,我的猜测是,您是作为个人开发应用程序,因此您的开发决策不会影响其他人。如果你用一个更大的团队开发一个应用程序,你的观点很可能会改变,我希望我的回答在这方面有很多意义。

 类似资料:
  • 我有一个ViewPagerContainer片段,在应用程序启动时加载。ViewPagerContainer片段将两个选项卡(选项卡A和选项卡B)添加到操作栏。选项卡B有两个项目的列表视图。 我所做的:我在选项卡B片段中的列表视图项上附加了一个click listener,这样当用户单击一个项时,它会在第一个片段(即选项卡B下)内打开另一个片段(子片段)。 我陷入困境的地方:当用户按下后退按钮时,

  • 我的应用程序(最小API14)使用带有3个选项卡的ActionBar。选项卡是:i。输入数据(约10个片段)ii。管理数据(15个片段)三.查看数据(8个片段)。每个选项卡都有一个默认片段,但根据用户的选择会有多个片段。 我希望用户能够在3个选项卡之间滑动(通过滑动内容),因此我需要使用ViewPager和兼容性库V4。 我得到的建议(经过大量研究)是使用一个MainActivity,它承载Act

  • 问题内容: 我在小组活动中有一个片段,我想用另一个片段替换它: 在不使用活动组的情况下作为单独的项目完成时,它工作正常,当控件进入getview()时,每件事在日志猫中都可以正常工作,但是没有视图可见,甚至没有任何异常出现,我希望将书详细信息片段由部分详细信息片段代替。 图书详细信息片段的XML具有id book_description_fragment,而部分描述片段的xml具有id secti

  • 我花了一小段时间试图研究片段和活动之间的差异,但没有找到任何结论。这条线程似乎建议片段是片段,而片段活动天生比活动快? 它可能是相关的,使平板版本的应用程序在未来,在这种情况下,我认为碎片将是有用的,但B)是一个主要的头痛从活动重新设计到使用碎片代替? C)当使用片段时,你可以让屏幕-a作为你的主要活动,屏幕-B作为你的片段-#1,或者你必须让两个屏幕作为一个片段,主活动作为父。

  • 我是一个新的android,我正在做一个应用程序,有一个登录页面片段,其中有一个更改密码选项(按钮),然后点击它,我可以创建一个活动或一个片段,我没有可重用的用户界面,因为两个屏幕使用不同的UI。我应该用什么碎片或活动?据我所知,当你有可重用的UI时,我们使用片段,片段比活动有更快的转换,通过我的搜索,我能够发现片段比活动更受欢迎。如果我使用活动而不是片段,如果我没有可重用的UI或者在这种情况下两

  • 我有4个片段,其中一个片段中有一个viewpager和一个不同的类,我用3个其他片段定义了viewpager的适配器,第一次打开此片段时,所有子片段都正确显示在viewpager中,但当我切换(使用transaction.replace)到另一个片段并再次返回时,子片段消失了,我不能使用ChildFragmentManager,因为它在代码中显示错误(ChildFragmentManager无法解