提问者:小点点

为什么是碎片,什么时候使用碎片而不是活动?


在Android API 11+中,Google发布了一个名为fragment的新类。

在视频中,谷歌建议只要有可能(link1,link2),我们就应该使用片段而不是活动,但他们没有解释具体原因。

片段的目的和它们的一些可能用途是什么(除了一些UI示例,这些示例可以通过简单的视图/布局轻松实现)?

我的问题是关于碎片的:

  1. 使用片段的目的是什么?
  2. 与使用活动/视图/布局相比,使用片段的优缺点是什么?

附加问题:


共3个答案

匿名用户

#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中。

    更多详情请访问官方站点《碎片》。