喂! (在这里为长篇文章道歉)
我正在编写一些基于相同代码的应用程序。
每个应用程序都会有差异,有些会有新的活动,所有活动都会分配不同的资源。
我正在尝试使用Android库项目,以便将所有常用代码放在一个位置,因此只需进行一次主要更改,所有项目都将更新。
现在,资源是一个简单的解决方案,因为我可以在主应用程序中定义每个资源,只要命名约定保持不变,这些资源将覆盖库项目中的资源。
现在,我的问题是如何对课程做同样的事情?例如,ill有一个基本视图作为所有视图中公共代码的包装器。在此,我发起各种活动。如果所有三个应用程序需要启动不同的活动,因为它们将包含不同的UI和功能,该怎么办?我该怎么做?库项目永远不会知道主项目想要使用不同的活动,因为它已经被编译。
我有几个我想过的解决方案,但我想知道是否有其他人有想法?这对任何反馈都有很大的帮助:
要启动的库项目中的活动存储对要加载的类的引用,该引用将在主应用程序启动时定义。这是当库项目调用此活动时,它可以加载它被告知的内容。
我保留了库项目活动中不会改变的所有功能。然后我扩展了这个活动,并覆盖onCreate以执行我需要的操作(例如加载不同的布局,设置视图等)。现在这有一个缺点,因为我必须在主应用程序中而不是在库项目中定义大多数入口点。
我希望你关注我的问题。请问我是否解释得不好。
谢谢,
亚当
答案 0 :(得分:0)
或者更简单:你应该使用继承或组合来实现这种灵活性吗?
我也有这种结构任务。通常,您可以通过重复使用适用的模式&来解决此问题。以较小的碎片打破必要的代码部分。即如果你知道不同的是视图,那么将它提取到一些杰出的类中,这些类将针对一个常见的接口实现,并引用基础活动中的接口。
一些链接:
至少从我对你的问题的理解来看,这更像是一个OOP设计问题。