2010-08-18 86 views
5

对不起,我知道这个话题已经被覆盖了一下。我已阅读相关帖子,但仍有点困惑。我正在开发一款应用程序,虽然原型将有三个主屏幕,但最终会有几十个。每个屏幕将呈现改变状态或采取用户输入。为了可视化,需要对其进行布局,类似于MS Word或典型的PC。它的顶部有一个状态栏,底部有一个导航栏,这对所有屏幕来说都很常见(中间是一些屏幕的细微调整,就像不同的图标一样),这就是我称之为需要更新的视图窗格适用的布局。Android活动与视图

状态,导航栏和每个屏幕都在其自己的布局xml文件中定义。对于我的第一个噱头,我只使用了一个ViewFlipper并将3个屏幕布局加载到它中。然而,这意味着目前我有一个主要的活动,因为我继续添加屏幕,这将不可维护。

  1. 我感觉我觉得每个屏幕布局都应该有一个关联的Activity类,它可以理解如何控制该屏幕。我需要弄清楚如何将它加载到中心窗格动态。不过,我想我在另一篇文章中读到,使用多个活动可能是一个CPU和内存泄漏。
  2. 目前我尝试制作其中一个屏幕它是自己的Activity,并通过创建一个Intent而不是调用startActivity从主Activity中踢掉它。但是,这会导致新的屏幕“活动”驻留在主“活动”的顶部。有趣的是,然后按下后退按钮驳回了该活动并将我返回到主界面。
  3. 到目前为止,我还没有想出如何设置具有不同的活动控制中心窗格中发生了什么。
  4. 如果我继续执行多个Activity路径,我的主Activity是否应该从ActivityGroup继承?
  5. 在这种情况下是否使用更适用的View类?

我知道这是一篇很长的文章。我会很感激任何建议。 谢谢! CB

回答

3

正如您所注意到的,Android会隐式追踪任务中已启动活动的堆栈,并且“后退”按钮结束最上面的一个,重新激活下一个。我建议你考虑用户可能期望后退按钮所做的事情,并使其沿着这些行分开。

我还没有玩过ActivityGroup,所以我不能在那里给你提供建议。如果你完全独立的活动,你可以让他们都使用相同的“外壳”内容视图与常见的导航/状态栏。有一个超类或实用程序类来处理填充和管理。然后使用一个LayoutInflater(您可以拨打电话getLayoutInflater())以填写特定于活动的视图。

如果您希望其中一个活动具有多个屏幕,则最终可能会在中央插槽中放置ViewFlipper。同样,您希望在用户希望能够“返回”的任何地方进行活动转换;这也意味着您可能不希望在屏幕密切相关或逻辑相同的情况下进行更改。 (您可以覆盖后退按钮的行为,但除非您有充分的理由,否则最好只安排应用程序,以便Android的基本设置可以帮助您的应用程序的用户界面,而不是用于交叉目的。)

+0

感谢您的输入,我工作的方法是让我的主要活动为用户提供初始屏幕(A,B或C,各自各自的活动)的显示选择。主要通过startActivityForResult完成。用户可以通过点击/滑动选择左/右来查看新的屏幕。但是我对我正在做的破解实施并不满意。活动调用onFinish自己返回到main并将用户选择向左/向右传回,并主要启动适用的活动。当然现在后面不会像我想要的那样工作。建议? – bursk 2010-08-21 15:34:51

+0

你想如何回去工作? – 2010-08-21 16:03:10

+0

猜测我错误地描述了最后一部分,按照当前实现点击后退按钮将使用户回到主屏幕,他们选择A,B或C来显示。但是,如果用户在A上并滑动以查看B,我认为期望可能是当他们回击时他们回到A,而不是主要。不过,我也不想陷入这样一种情况:他们已经导航到了很多地方,然后在退出之前需要一遍又一遍地点击。我倾向于在我的main中保留一个ArrayList的Activities,然后尝试自己处理它。 – bursk 2010-08-21 17:57:07

1

如果您想要以您所谈论的方式使用活动,您可以使用选项卡活动进行研究。它实际上以您想要的方式工作,您只需要隐藏选项卡小部件并将导航栏放在那里。或者,如果你有更多时间,你可以深入一点,让你自己拥有像Walter一样的类似标签的ActivityGroup。

+0

别忘了 - 现在,ActivityGroup已弃用。 – alshapton 2013-03-20 11:10:18

1

您可以使用带有片段的视图寻呼机来完成不同视图之间的翻转,但仍然允许您的活动完全控制它。活动可以控制菜单,而片段控制您的查看区域。这样您的后退按钮将正确地关闭包含与活动相关的所有页面的活动,而不是沿着堆栈走。