Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 何时使用活动转换与动态片段的模式_Android_Android Layout_Android 3.0 Honeycomb_Android Fragments_Android Activity - Fatal编程技术网

Android 何时使用活动转换与动态片段的模式

Android 何时使用活动转换与动态片段的模式,android,android-layout,android-3.0-honeycomb,android-fragments,android-activity,Android,Android Layout,Android 3.0 Honeycomb,Android Fragments,Android Activity,在Android活动和片段中,有没有关于如何处理UI转换的模式?我目前正在研究一个UI,它在横向视图中最多有3列。 我希望UI从屏幕上的1列开始,然后在第二列中选择移动的内容,然后在平板电脑和手机上单击第二列中的内容,在第三列中淡入淡出,在手机上单击第一列淡出。 我想知道什么时候我应该作为一个活动转换来做这件事,什么时候我应该只使用出现视图的片段。据我所知,片段可以移动到其他活动中,因此我的选择是要么使用静态列布局实现活动,然后使用片段进行转换,要么使用一个包含所有3列的活动,让活动管理片段的出

在Android活动和片段中,有没有关于如何处理UI转换的模式?我目前正在研究一个UI,它在横向视图中最多有3列。 我希望UI从屏幕上的1列开始,然后在第二列中选择移动的内容,然后在平板电脑和手机上单击第二列中的内容,在第三列中淡入淡出,在手机上单击第一列淡出。 我想知道什么时候我应该作为一个活动转换来做这件事,什么时候我应该只使用出现视图的片段。据我所知,片段可以移动到其他活动中,因此我的选择是要么使用静态列布局实现活动,然后使用片段进行转换,要么使用一个包含所有3列的活动,让活动管理片段的出现。这两种方法都可行,但我对这两种解决方案的利弊都很感兴趣

有两个问题与我的问题相似,但没有完全回答我的问题

根据页面,活动是独立的,而片段可以被视为迷你活动,必须在实际活动中托管

它接着说,Fragment API的引入为android开发者提供了解决开发者在活动中遇到的许多难题的机会,因此在android 3.0中,Fragment的实用性远远超出了仅针对不同屏幕进行调整的范围:

我认为在应用程序中使用单个活动不一定是错误的决定,只是风格问题。这是一个决定,你应该作出的基础上,你正试图完成


然而,片段的引入被认为是为了解决现实世界中的问题。仅基于此,我建议您编写一些“概念验证”代码并评估结果。目前,这可能是唯一一个真正重要的现实测试

全屏使用活动

使用片段作为部分屏幕或无屏幕(但不是服务)

在我的主应用程序中,在水平滚动视图中有屏幕上的选项卡,我希望在应用程序的多个部分中保留这些选项卡。部分包括 新闻、照片、视频、日程安排等所有以单用户为中心的任务

包含这一切的主要应用程序是一个应用程序,选项卡只是一个调用片段管理器的视图

但是,我在应用程序的更深层使用复杂的用户活动。例如,如果有人播放视频,请查看项目详细信息页面和照片库/幻灯片部分,因为它们都是全屏组件

在转换到全屏时,不需要显示/隐藏片段,因为活动堆栈可以快速轻松地处理所有您想做的事情,并使代码保持最少和干净


因此,我有“活动->收藏片段->启动全屏活动”来执行特殊命令。

片段看起来更像是前面的代码(因为您在片段中放置的是视图,在活动中放置的是片段,而不仅仅是活动中的视图),但在这种情况下,它们能让你免于头疼——当然是碎片。他们甚至为您处理过渡

我们有一些名为“蜂巢画廊”的示例代码,您可以查看,它有两列加上actionbar布局,并且能够显示/隐藏最左边的列。这将为您提供一个良好的开端,让您了解如何对多个片段进行布局并显示/隐藏它们


仅供参考,在一个活动中使用多个片段而不是多个活动的一个重要权衡是,片段不会直接响应意图-例如,如果您有一个笔记应用程序,其中“查看笔记”页面是一个活动,您将其更改为在主活动中有一个“查看笔记”片段,然后,您必须对其进行设置,以使主活动在意图中接收注释ID和注释操作(创建、查看、编辑等),而不是仅让“查看注释”活动在意图中接收注释ID。然后,主活动需要在页面上相应地设置片段。这没什么大不了的,但如果通过Intent对应用程序的各个部分进行外部访问很重要,那么将应用程序分解为几个活动,并使用片段来表示各个组件可能会更容易。

感谢Alexander,这是一个很好的指针,实际上我已经忘记了那个示例应用程序。对我来说,更多的是关于何时使用一个包含静态片段的活动以及何时动态加载片段。我认为一个好的模式是意图机制。因此,如果您希望屏幕可以通过一个意图寻址,那么就在它自己的活动中使用它。你能想出其他的模式吗?冰激凌三明治核心应用程序中会有好的模式,可以用来研究如何最好地使用碎片吗?在最近的蜂巢安卓开发实验室,我们有一个开发人员说,他们使用“gmail会做什么”。虽然在你的应用程序中起作用的东西总是最重要的,但它们确实提出了一个很好的观点,那就是gmail应用程序(平板电脑和手机)是一个非常可靠的参考,可以很好地使用片段,并根据上下文更新动作条项目和可见片段(也就是说,actionbar项目的变化取决于你是在读邮件、写邮件还是浏览邮件列表。)在蜂巢、Youtube和Contacts中,也很棒。根据ICS,我现在还不能谈论细节:)谢谢你的精彩更新。我期待着在ICS开源论坛上看一看代码。我知道很多谷歌应用程序都没有包括在内,但我相信在开源树中仍然有足够多的核心应用程序可以学到很多东西。谢谢你的评论Noah,我同意你所说的,不幸的是它没有回答我的问题