Android上一个课程中的多个活动

时间:2012-01-13 20:05:07

标签: android android-layout

我想知道是否可以在一个类中创建多个活动而不必为每个活动创建一个新类?

因此,为一个类中的各种活动定义各种布局xml,而不必为每个活动创建新类。

由于

2 个答案:

答案 0 :(得分:0)

不,您应该将每个活动放在单独的课程中。看看this问题。有人想和你一样。

答案 1 :(得分:0)

瑞奇,

是的,您可能在单个类中定义了多个“活动”。但这样做有很多障碍和问题。在回答这个问题之前,必须先理解两件事:

  1. 您所提出的问题违反了Android开发指南,这些指南在编译过程中以尽可能多的方式实施,因此我在此处所说的任何内容都无法在任何或所有API中使用Android SDK的版本。

  2. 不同的开发环境会自行检查并以稍微不同的方式进行编译。我将从Eclipse的开发方面发言。

  3. 此处列出的技术适用于教育,但会引入很多的问题。对于自我教育和理论,这是一个很好的探索实践。然而,这个答案的目的是教育你为什么应该遵循指南而不是回避。

  4. 活动要求

    首先要了解的是Android具有必须满足的特定点才能运行Activity。它必须:a)在清单中声明; b)有一个描述如何使用的intent-filter; c)成为公共课; d)成为顶级班级。

    多项活动,同一父类

    这意味着你可以在另一个类(一个内部Activity,可以这么说)中创建一个Activity,但是它必须被声明为staticpublic。这会以多种方式限制您的活动。无法调用与父类实例相关(非静态)的方法或成员。所以你会浪费很多时间和代码来解决这个问题。

    其次,它会影响您的Activity的Android XML声明。这是真正的麻烦所在,因为虽然它可以完成,但它非常具体,并且没有任何支持文档可以实现这一点。但是没关系,你想知道你是否可以为你的活动制作一堂课。

    多项活动,同一类

    好吧,Android根据其Intent确定要运行哪个Activity。您可以多次声明同一个类,但使用不同的Names和Intent-filters。如果是这种情况,那么您必须根据Intent和包含的额外内容确定要执行的操作。这将在您的onCreate()方法中完成。

    以这种方式执行操作意味着您必须在每个的地方编写两个活动的代码,而这些活动通常会处理一个。这将使追踪错误以支持您的产品变得更加困难。它还会使每个例行操作都花费更长的时间,因为您必须决定执行哪种方法。例如,如果覆盖onDraw(),则必须知道要绘制的Activity。它最终只是一个很大的schmorgasborg(sp?是否任何人知道如何拼写这个词?)“我该怎么办?!”

    真实问题

    你为什么要这样做呢? 1.如果答案是节省自己的时间导航你自己的项目,相信我......那不会真的发生。您的代码将难以阅读,解释和调试。

    1. 如果答案是您要保存文件空间,我会重新考虑您项目的优先事项。

    2. 如果答案是您要共享功能,请考虑扩展Activity,然后扩展新的子类。您认为他们如何开始使用ListActivity或TabActivity?

    3. 如果您想保存状态,可以在SharedPreferencesApplication对象中放置状态(如果您已将其扩展)。

    4. 正如您所看到的,无论您的需求如何,还有很多其他方法可以解决这个问题,不会让您或其他任何人麻烦。

      希望这有帮助,

      FuzzicalLogic