【发布时间】:2013-02-06 17:26:14
【问题描述】:
我想知道是否可以不必为每个活动创建一个新类,而是可以在一个类中创建多个活动?
因此,为一个类中的各种活动定义各种布局 xml,而不必为每个活动创建新类。
谢谢
【问题讨论】:
-
如果你所有的活动都做同样的事情,你可以使用 setContextView(R.layout.whatever);多次改变你的看法
我想知道是否可以不必为每个活动创建一个新类,而是可以在一个类中创建多个活动?
因此,为一个类中的各种活动定义各种布局 xml,而不必为每个活动创建新类。
谢谢
【问题讨论】:
不,您应该将每个活动放在单独的班级中。看看this 的问题。有人想知道和你一样的事情。
【讨论】:
瑞奇,
是的,您可以在一个类中定义多个“活动”。但是这样做有很多障碍和问题。在我回答这个问题之前,必须了解两点:
不同的开发环境会进行自己的检查,并以略微不同的方式进行编译。我将从开发的 Eclipse 方面发言。
此处列出的技术用于教育,但会引入很多问题。对于自学和理论来说,探索是一种奇妙的实践。但是,此答案的目的是让您了解为什么应该遵循而不是回避该指南。
活动要求
首先要了解的是,Android 具有运行 Activity 必须满足的特定点。它必须: a) 在清单中声明; b) 有一个意图过滤器来描述如何使用它; c) 是一个公共类; d) 成为顶级类。
多个活动,同一个父类
这意味着您可以在另一个类中创建一个 Activity(可以说是一个内部 Activity),但是它必须声明为 static 和 public。这会以多种方式限制您的活动。无法调用与父类实例相关(非静态)的方法或成员。所以你会浪费很多时间和代码破解。
其次,它会影响 Activity 的 Android XML 声明。这就是真正的麻烦所在,因为虽然可以做到,但它非常具体,并且没有任何支持文档可以做到这一点。不过没关系,您想知道您是否可以为您的活动制作 ONE 课程。
多个活动,同一类
好吧,Android 会根据其 Intent 确定运行哪个 Activity。您可以多次声明同一个类,但使用不同的名称和意图过滤器。如果是这种情况,那么您必须根据 Intent 和包含的附加内容来确定要做什么。这将在您的 onCreate() 方法中完成。
以这种方式做事意味着您必须在每个通常处理一个活动的地方为两个活动编写代码。这将使追踪错误以支持您的产品变得更加困难。它还会使每个例行操作花费更长的时间,因为您必须决定执行哪种方法。例如,如果您覆盖 onDraw(),您将必须知道您正在绘制哪个 Activity。它最终只是一个“我该怎么做?!”的大 schmorgasborg(sp?有人知道如何拼写这个词吗?)
真正的问题
你为什么要这样做呢? 1. 如果答案是为了节省自己浏览自己项目的时间,相信我……那不会真的发生。您的代码将更难阅读、解释和调试。
如果答案是您想节省文件空间,我会重新考虑您项目的优先级。
如果答案是您想要共享功能,请考虑扩展 Activity,然后扩展您的新子类。你认为他们是如何开始制作 ListActivity 或 TabActivity 的?
如果你想保存状态,你可以把状态放在SharedPreferences或者你的Application对象中(如果你已经扩展了它)。
如您所见,无论您的需求是什么,都有许多其他方法可以以不会给您或其他任何人带来麻烦的方式来解决它。
希望对你有帮助,
模糊逻辑
【讨论】: