2011-10-31 82 views
5

我有一个Android项目,使用库项目(我所构建的所有项目)。我正在使用ADT/SDK v14,我需要访问主项目中的主类,并在库项目中的对话框被取消时调用函数。现在,如果我将一个对我的主项目的引用添加到图书馆项目中,我可以这样做,但这并不理想。我如何从图书馆项目的一个类中获得对我的主项目中的一个类的引用?从库类访问主项目类

这是它是如何工作的:

  • 我有我在我的项目是一个tabhost
  • 的tabhost获取从库项目选项卡中的片段
  • 其中一个片段的主类对于标签启动一个DialogFragment
  • 当该DialogFragment被驳回,我需要调用主类fillItems()函数(这是我卡)

任何人有任何想法?

感谢, 埃德

+1

从面向对象的角度来看,你不应该以这种方式进行沟通。你不希望你的图书馆与你的主要项目紧密结合;他们很快就会变得“不可共享”。 –

+0

是的,我知道那不是我要走的路,我试图避开它,但我无法将我的头围绕在我需要做的事情上。下面的答案是我需要的。谢谢。 – ssuperz28

回答

5

如何获得一类在我的主要项目从一类在库项目的引用?

理想情况下,你不这样做。

相反,您:

  1. 定义中包含要调用它的实现来自于主体工程
  2. 实施上的一些可能的类接口在您的主项目
  3. 方法库的接口
  4. 通过一些设置器或通过构造函数参数将实现提供给库
  5. 让库根据需要调用接口实现上的方法
  6. 确保你没有做这一切

只有这样,才能字面意思是“在我的主要项目从库项目一类得到一个类的引用”引入任何种类的垃圾收集的问题是通过反射,这是缓慢的,并使难以维护的代码。

+0

谢谢!我知道我正在推翻这一点。基于你上面所说的,我在库中创建了一个全局监听器,并在我的主类中订阅它,现在我可以调用我的函数。我不认为会有任何GC问题,对吧?看起来非常有效。我总是使用你的样品,他们帮助我摆脱了一些困境。谢谢! – ssuperz28

+0

@ ssuperz28:“我不认为会有任何GC问题,对吧?” - 我无法告诉,对不起。 – CommonsWare