从库类中访问主项目类

6
我有一个使用库项目的Android项目(都是我建立的)。我正在使用ADT/SDK v14,需要从库项目中访问主项目的主类并在库项目中的对话框关闭时调用函数。现在,如果将我的主项目引用添加到库项目中,我可以做到这一点,但这不是理想的。如何从库项目的类中获取对主项目类的引用?
以下是工作方式:
- 我的主类位于我的项目中,是一个选项卡宿主 - 选项卡宿主从库项目中获取选项卡的片段 - 选项卡片段之一启动一个DialogFragment - 当DialogFragment关闭时,我需要在主类中调用fillItems()函数(这就是我卡住的地方)
有任何想法吗?
谢谢, Ed

1
从面向对象编程的角度来看,你不应该以那种方式进行通信。你不希望你的库与主项目紧密耦合;否则它们很快就会变得“无法共享”。 - Austin Salonen
是的,我知道那不是正确的方法,我一直在试图避免使用它,但我就是无法理解需要做什么。下面的答案是帮助我解决问题所需的。谢谢。 - ssuperz28
1个回答

5
如何从库项目的类中获取主项目中的类的引用?
理想情况下,您不需要这样做。
相反,您可以:
1. 在库中定义一个接口,其中包含您想要调用的方法,其实现来自于主项目。 2. 在主项目中的一些类上实现该接口。 3. 通过某个setter或构造函数参数将该实现提供给库。 4. 库会根据需要在接口实现上调用方法。 5. 确保您不会通过所有这些引入任何垃圾收集问题。
要从库项目的类中直接“获得对主项目中类的引用”的唯一方法是通过反射,这会导致代码缓慢且难以维护。

谢谢!我知道我在想太多了。根据你上面说的,我在库中创建了一个全局监听器,并在我的主类中订阅它,现在我能够调用我的函数了。我认为这样做不会有任何GC问题,对吧?看起来相当高效。我一直在使用你的示例,它们帮助我解决了一些困境。谢谢! - ssuperz28
@ssuperz28:“我认为这个不会有任何GC问题,对吧?”-- 抱歉,我无法确定。 - CommonsWare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接