【发布时间】:2011-06-24 21:29:12
【问题描述】:
嘿! (此处为长篇道歉)
我正在编写一些基于基本相同代码的应用程序。
每个应用程序都有其不同之处,有些应用程序会有新的活动,所有应用程序都会分配不同的资源。
我正在尝试使用一个 Android 库项目,以便我可以将所有通用代码放在一个地方,因此只需进行一次重大更改,所有项目都会更新。
现在,资源是一个简单的解决方案,因为我可以在主应用程序中定义每个资源,只要命名约定保持不变,这些资源就会覆盖库项目中的资源。
现在,我的问题是,除了课程,我该如何做同样的事情?例如,我有一个基本视图作为跨所有视图的通用代码的包装器。在此,我开展各种活动。如果所有三个应用程序都需要启动不同的活动,因为它们将包含不同的 UI 和功能怎么办?我该怎么办?库项目永远不会知道主项目想要使用不同的活动,因为它已经被编译了。
我已经想到了几个解决方案,但我想知道其他人是否有一些想法?此处的任何反馈都会有很大帮助:
要启动的库项目中的 Activity 存储对要加载的类的引用,该类将在启动时在主应用程序中定义。这是库项目调用此活动时,它可以加载它被告知的内容。
我将所有不会更改的功能保留在库项目活动中。然后我扩展这个活动,并覆盖 onCreate 来做我需要做的事情(比如加载不同的布局、设置视图等)。现在这有一个缺点,因为我必须在我的主应用程序中而不是在库项目中定义大部分入口点。
我希望你能关注我的问题。请问我是否解释得不好。
谢谢,
亚当
【问题讨论】:
-
我想我可能已经找到了解决方案。使用 Intent 的反射和 setClassName 方法,库项目不需要有可用的 Class 实例。主应用程序现在可以定义这些类,并且库项目将能够调用它们。到目前为止似乎工作正常!
-
我遇到了同样的问题。您能否提供您的反射代码,因为我认为它也可以解决我的问题。
标签: android design-patterns android-library