Android ActionBar模式 - 多个活动或片段

时间:2013-09-16 03:53:12

标签: android android-layout android-fragments android-actionbar uinavigationbar

在stackoverlow上几乎没有类似的问题,但我没有在任何答案中找到明确的解释如何为更复杂/多个活动的应用程序实现Action Bar模式。

据我了解,有两种选择:

1。)实现多个活动,并在每个活动中实现/包含操作栏 - >这个问题就是,当你吃新活动的时候,虽然它有相同的动作条,它有转换,并跳过屏幕,所以很明显它是一个新的“窗口”,新的单独屏幕,它杀死了单个应用程序导航框架的感觉。

2。)使用单个FragmentActivity,其中包含操作栏,并使用多个片段来扩展内容框架。 - >这是非常好的动作栏模式的实现,但问题是它反对谷歌的建议,在手机的情况下,一个片段应该在一个活动中。或者它没有?从“外观和感觉”来看,我认为Gmail应用程序主要以这种方式完成。

3。)TabActivity - 已弃用。

对于第二个解决方案(单个活动,多个片段)我担心将来会出现任何性能问题吗?在这种情况下,android如何处理内存?它会像活动那样杀死非活动碎片以释放空间吗?或者它会杀死整个应用程序,否则用户手机会超载?

也许我在那里遗漏了一些东西,但我发现实现android导航模式和片段的使用非常混乱:/

有没有理由反对手机上有多个片段的活动? (会有cca 5-6片段,其中一些片段有嵌套片段)

1 个答案:

答案 0 :(得分:1)

首先,您可能认为this questionthis answer很有用。

虽然你在谈论动作栏,但真正的问题是关于带有多个片段的 ONE活动模式或 MULTIPLE活动。正如之前的链接所述,尽管“过度简化的教程”建议启动另一个活动以在电话情境中显示项目的内容,但这可能会导致一些重复的逻辑或代码。

最后,建议使用“FragmentActivity with multiple fragments”。由于它反对谷歌的建议,Stephen Asherson说,我引用:“不要认为它被迫使用许多活动。认为它有机会将你的代码分成许多片段,并保存使用它们时的记忆“。

PS。仅为了您的信息,如果您在切换片段时更改活动的操作栏,则可能需要执行某些操作以在按下“后退”键并更改后台堆栈时正确处理UI更改。通常,重写onbackstackchanged()函数来处理UI。