6

要求

我有一个包含2 个活动的应用程序,比如 A 和 BA->B ,并带有和B->A(在后按时)这样的导航。我的要求是

  • 我想要一个浮动在屏幕上的视图/布局,无论当前可见哪个活动。我在应用程序启动(活动 A 的 onCreate)上膨胀了这个视图,它在从 A-> B 转换期间以及当 B 在屏幕上时在屏幕上保持静态。
  • 所以很自然这个视图应该只膨胀一次(当应用程序启动时,A的onCreate)。

我发现了什么

我做了一些搜索,据我所知,有两种方法可以在 android 中重用布局

  • 使用 <include>

    它似乎只是一个编写常用 UI 元素的 xml 代码的工具。每次在父布局中使用时,它都会膨胀。

  • 使用 ViewStub

    我对使用 ViewStub 进行了一些研究,这似乎也是一种在许多布局中重用代码段的方法。每次我们在布局中使用它时也需要对其进行充气,除非我们在运行时使它们可见时才会充气。

我的要求的另一个提示

对于熟悉 iPhone 开发的人,您可以将视图添加到UIWindow,无论哪个UIViewController当前处于活动状态,它都会保留在那里。我想要我的应用程序中的确切行为。

我原来的设置

我的目标是 android 2.1 及更高版本。它似乎Fragment可以从 API 级别 11 (android 3.0) 及更高版本获得。一种选择是使用允许在旧版本中使用的android 兼容性库。Fragment我现在正在研究这个。但我也想知道是否有任何其他方法可以满足我的要求,而不是改变我的整个项目并使用片段。

我的应用程序中有大约 30 个奇怪的活动,我希望这个布局漂浮在所有这些活动上。我刚刚制作了一个包含 2 个活动的测试用例,以使问题变得简单易行。

4

1 回答 1

2

解决方案 1:框架布局

我认为您要使用的是FrameLayout. FrameLayout 旨在阻止屏幕上的一个区域以显示单个项目。子视图绘制在堆栈中,最近添加的子视图在顶部。

http://developer.android.com/reference/android/widget/FrameLayout.html

然后在此处阅读有关您可以在活动中使用的后退堆栈,以使用后退按钮在活动之间来回翻转:

http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html

解决方案 2:分片交易

与其编写两个单独的活动,不如用两个片段编写一个活动。以下是来自Fragments文档的简介:

“一个fragment必须始终嵌入到一个activity中,fragment的生命周期直接受到宿主activity的生命周期的影响。例如,当activity暂停时,所有的fragment都在里面,当activity被销毁时,所有的fragment都一样. 但是,当一个活动在运行时(它处于恢复的生命周期状态),您可以独立地操作每个片段,例如添加或删除它们。当您执行这样的片段事务时,您还可以将其添加到返回堆栈中由活动管理——活动中的每个返回堆栈条目都是发生的片段事务的记录。返回堆栈允许用户通过按下后退按钮来反转片段事务(向后导航)。

于 2012-06-15T06:48:44.647 回答