and*_*per 451 android android-layout android-fragments android-3.0-honeycomb android-activity
在Android API 11+中,Google发布了一个名为的新类Fragment.
在视频中,谷歌建议尽可能(link1,link2),我们应该使用片段而不是活动,但他们没有解释确切原因.
片段的目的是什么?它们的一些可能的用途(除了一些可以通过简单的视图/布局轻松实现的UI示例)?
我的问题是片段:
奖金问题:
Gle*_*ech 267
#1和#2使用片段的目的是什么?与使用活动/视图/布局相比,使用片段有哪些优点和缺点?
片段是Android创建可重用用户界面的解决方案.您可以使用活动和布局(例如使用包含)来实现某些相同的功能.然而; 片段从HoneyComb连接到Android API.让我详细说明;
的ActionBar.如果您希望选项卡在那里导航您的应用程序,您很快就会看到该ActionBar.TabListener界面为您提供了FragmentTransaction该onTabSelected方法的输入参数.你可能会忽略这一点,做一些别的和聪明的事情,但是你会反对API而不是它.
该FragmentManager手柄«返回»在一个非常聪明的方式为您服务.返回并不意味着回到最后一个活动,就像常规活动一样.这意味着回到之前的片段状态.
您可以使用cool ViewPagerwith a FragmentPagerAdapter来创建滑动界面.该FragmentPagerAdapter代码是比普通的适配器更清洁,它控制各个片段的实例.
如果在尝试为手机和平板电脑创建应用程序时使用Fragments,您的生活将变得更加轻松.由于片段与Honeycomb + API紧密相关,因此您还需要在手机上使用它们以重用代码.这就是兼容性库派上用场的地方.
您甚至可以而且应该将片段用于仅适用于手机的应用程序.如果你有可携带性.我使用ActionBarSherlock和兼容库来创建"ICS外观"应用程序,看起来一直回到1.6版本.您可以获得最新功能,如ActionBar标签,溢出,分割操作栏,viewpager等.
奖金2
在片段之间进行通信的最佳方式是意图.当您按片段中的内容时,通常会调用StartActivity()其中的数据.意图将传递给您启动的活动的所有片段.
Nik*_*kov 68
不确定你指的是哪些视频,但我怀疑他们是说你应该使用片段而不是活动,因为它们不能直接互换.在开发指南中实际上有一个相当详细的条目,请考虑阅读它以获取详细信息.
简而言之,片段存在于活动内部,每个活动都可以容纳许多片段.与活动一样,它们具有特定的生命周期,与活动不同,它们不是顶级应用程序组件.片段的优点包括代码重用和模块化(例如,在许多活动中使用相同的列表视图),包括构建多窗格界面的能力(主要用于平板电脑).主要缺点是(某些)增加了复杂性.通常,您可以使用非标准且不太稳健的方式使用(自定义)视图实现相同的功能.
man*_*ani 45
片段是应用程序的用户界面或行为的一部分,可以放在Activity中,从而实现更模块化的活动设计.如果我们说片段是一种子活动就不会错.
以下是关于片段的重要观点:
片段具有自己的布局和自己的行为以及自己的生命周期回调.
您可以在活动运行时在活动中添加或删除片段.
您可以在单个活动中组合多个片段以构建多窗格UI.
片段可用于多个活动.
片段生命周期与其宿主活动的生命周期密切相关.
当活动暂停时,活动中可用的所有片段也将停止.
片段可以实现没有用户界面组件的行为.
使用API版本11 将片段添加到Android 3(Honeycomb)的Android API中.
有关详细信息,请访问官方网站Fragments.
Kav*_*wal 16
这是我在片段上发现的重要信息:
从历史上看,Android应用中的每个屏幕都是作为单独的Activity实现的.这在屏幕之间传递信息时产生了挑战,因为Android Intent机制不允许在活动之间直接传递引用类型(即对象).相反,必须序列化对象或提供可全局访问的引用.
通过使每个屏幕成为一个单独的片段,完全避免了这种数据传递的麻烦.片段始终存在于给定Activity的上下文中,并且始终可以访问该Activity.通过在Activity中存储感兴趣的信息,每个屏幕的片段可以通过Activity简单地访问对象引用.
资料来源:https://www.pluralsight.com/blog/software-development/android-fragments
片段在某些情况下特别有用,例如我们想在所有页面中保留导航抽屉.您可以使用您想要的任何片段为框架布局充气,并且仍然可以访问导航抽屉.
如果您使用过某个活动,则必须将抽屉保留在所有可能产生冗余代码的活动中.这是片段的一个有趣用法.
我是Android新手,仍然认为片段有用这种方式.
我知道这已经被讨论到死,但我想补充几点:
Frags 可用于填充Menus 并可以MenuItem自行处理点击。从而为您的活动提供更多调制选项。您可以在 Activity 不知道的情况下执行 ContextualActionBar 等操作,并且基本上可以将其与您的 Activity 处理的基本内容(导航/设置/关于)分离。
带有子 Frag 的父 Frag 可以为您提供更多选项来模块化您的组件。例如,您可以轻松地交换 Frags,将新 Frags 放入 Pager 中或移除它们,重新排列它们。所有这些都不需要您的 Activity 对其一无所知,而只是专注于更高级别的东西。
小智 5
活动是应用程序中带有工具栏的全屏组件,其他所有内容最好都是片段。具有工具栏的一个全屏父活动可以具有多个窗格,可滚动页面,对话框等(所有片段),所有这些都可以从父访问并且可以通过父进行通信。
例:
活动A,活动B,活动C:
与
活动A,片段1,片段2,片段3:
| 归档时间: |
|
| 查看次数: |
162646 次 |
| 最近记录: |