两个活动还是两个片段?

时间:2013-02-21 18:36:59

标签: android android-fragments

在Android应用中,我有两个用户看到的屏幕*,一个用于准备查询,另一个用于显示结果。这里正确的UI是在一个屏幕上进行查询准备,然后在第二个屏幕上查看结果。由于此应用程序针对的是手机用户,因此无需一次显示这两个应用程序。

传统的Android方式是使用两个活动,QueryPreparationActivityDisplayResultActivity,并在两者之间切换。但是,我越来越多地听到Android UI如何切换到片段。我可以将两个屏幕实现为两个片段并让活动切换它们,但它值得吗?我将基本上复制Android已有的活动管理代码。

有理由在这里使用两个片段吗?

*我使用的是screen,因为它不一定是活动...

3 个答案:

答案 0 :(得分:4)

就个人而言,我总是使用Fragments开发。

但我能给你使用Fragments的最好理由是,当你为手机和平板设备开发时,你会获得很多可重用性。

我知道您已经提到不需要同时显示两个屏幕。但后来说你要为平板设备开发相同的“屏幕”并意识到准备屏幕太贫瘠并且想要同时显示queryprep和显示结果,你将不得不写一个全新的第3个活动。

如果您使用了片段,则可以重复使用1个活动和2个片段,并且应该对该活动进行足够智能的编码,以确定屏幕的大小并显示正确的布局。

代码可重用性&灵活性是这里的热门话题。

如果您有任何疑问,请发表评论,我会扩大答案。如果您喜欢我的回答,请提出并接受。

答案 1 :(得分:3)

引入了片段将UI元素和相关行为封装到单个可重用模块中。在片段之前,您必须重新编写2个或更多活动共有的大部分相同代码,特别是如果您找不到将UI /控制代码抽象为超类的好方法。由于活动仅调用setContentView一次的限制,这进一步复杂化了。因此,在活动之间共享一些代码并不是那么好。

现在,要回答你的问题,一切都取决于你。如果您认为可以使用QueryPreparation或DisplayResult ui作为模块(它背后的布局和逻辑),那么请继续使用片段实现。它可能是手机上的风景视图的不同布局,或者如果您决定支持像nexus 7这样的小型平板电脑。如果您确定它永远不会发生,那么坚持使用活动。就个人而言,我在任何地方都使用片段,它们是一种确定的“未来证明”实现方式,可以在未来重复使用。

答案 2 :(得分:1)

简而言之,片段是为了适应平板电脑/大屏幕设备的出现而引入的,并允许开发人员创建可在各种屏幕尺寸上运行的应用程序,而代码更改很少。

更多可以是read here at the Android Blog。该博客还详细介绍了一些更精细的技术细节,以了解向Fragments迁移的原因。在Goolge IO 2012中还介绍了DialogFragments,您应该考虑使用DialogFragments而不是Dialogs。另一篇博文here describes他们。

你最好习惯于从get go中使用Fragments和DialogFragments,因为这是Android的移动方式。如果您真的需要为测试目的而做一个快速而肮脏的应用程序,请仅使用单独的活动。在我看来,片段确实需要更多的代码工作才能合并,并且最初会让你的头脑更好,但值得付出努力。