在Android API 11+中,Google发布了一个名为fragment
的新类。
在视频中,谷歌建议只要有可能(link1,link2),我们就应该使用片段而不是活动,但他们没有解释具体原因。
片段的目的和它们的一些可能用途是什么(除了一些UI示例,这些示例可以通过简单的视图/布局轻松实现)?
我的问题是关于碎片的:
附加问题:
#1(&R#2使用片段的目的是什么&与使用活动/视图/布局相比,使用片段的优点和缺点是什么?
碎片是Android创建可重用用户界面的解决方案。您可以使用活动和布局(例如,通过使用includes)实现一些相同的事情。但是;片断被连接到Android API,从HoneyComb到更高。让我详细说明一下;
>
操作栏
。如果希望上面的选项卡在应用程序中导航,可以很快看到ActionBar.TabListener
接口为您提供了一个FragmentTransaction
作为OnTabSelected
方法的输入参数。您可能会忽略这一点,并做一些其他的聪明的事情,但您将与API作斗争,而不是使用它。
FragmentManager
以一种非常聪明的方式为您处理“back”。Back并不意味着回到上次的activity,就像进行常规活动一样。意思是回到之前的片段状态。
您可以使用带有FragmentPagerAdapter
的酷ViewPager
来创建滑动界面。FragmentPagerAdapter
代码比常规适配器干净得多,它控制各个片段的实例化。
当你尝试为手机和平板电脑创建应用程序时,如果你使用碎片,你的生活将会轻松得多。由于这些片段与Honeycomb+API绑定在一起,您将希望在手机上使用它们来重用代码。这就是兼容性库派上用场的地方。
你甚至可以也应该将碎片用于只适用于手机的应用程序。如果您考虑到便携性的话。我使用ActionBarsherLock
和兼容性库来创建“看起来像ICS”的应用程序,这些应用程序从1.6版到现在看起来都是一样的。您可以获得诸如操作栏
之类的最新功能,包括选项卡,溢出,拆分操作栏,视图页等。
奖金2
片段之间通信的最佳方式是意图。当按下片段中的某个内容时,通常会调用StartActivity()
,其中包含数据。意图被传递到你发射的activity的所有碎片上。
不确定你指的是什么视频,但我怀疑他们是说你应该使用片段而不是活动,因为它们不能直接互换。在《开发指南》中实际上有一个相当详细的条目,请考虑阅读它以了解详细信息。
简单来说,碎片生活在活动内部,每个activity都可以托管很多碎片。与活动一样,它们具有特定的生命周期,与活动不同的是,它们不是顶级应用程序组件。片段的优点包括代码重用和模块化(例如,在许多活动中使用相同的列表视图),包括构建多窗格界面的能力(大多数在平板电脑上有用)。主要的缺点是(有些)增加了复杂性。您通常可以用一种非标准的,不那么健壮的方式用(自定义)视图实现同样的事情。
片断是应用程序用户界面或行为的一部分,可以放置在支持更模块化activity设计的activity中。如果我们说一个片段是一种子活动,这是不会错的。
以下是关于片段的要点:
>
片段具有自己的布局和行为,并具有自己的生命周期回调。
您可以在activity运行时添加或删除activity中的片段。
您可以在单个activity中组合多个片段,以构建多窗格UI。
一个片段可以在多个活动中使用。
碎片生命周期与其宿主activity的生命周期密切相关。
当activity被暂停时,activity中所有可用的碎片也将被停止。
片段可以实现没有用户界面组件的行为。
在API版本11的Android ;3(蜂巢)中,片段被添加到Android API中。
更多详情请访问官方站点《碎片》。