我有一个使用库项目的 Android 项目(所有这些都是我构建的)。我正在使用 ADT/SDK v14,我需要访问主项目中的主类,并在关闭库项目中的对话框时调用一个函数。现在,如果我将对我的主项目的引用添加到库项目中,我就可以做到这一点,但这并不理想。如何从库项目中的类获取对主项目中类的引用?
它是这样工作的:
- 我的项目中有一个主类,它是一个 tabhost
- tabhost 从库项目中获取选项卡的 fragment
- 选项卡的 fragment 之一启动 DialogFragment
- 当 DialogFragment 被关闭时,我需要在主类中调用 fillItems() 函数(这是我卡住的地方)
有人有什么想法吗?
谢谢, 埃德
最佳答案
How do I get a reference to a class in my main project from a class in the library project?
理想情况下,您不需要。
相反,您:
- 在库中定义一个接口(interface),其中包含您要调用的方法,其实现来自主项目
- 在您的主项目中的某个可能的类上实现该接口(interface)
- 通过一些 setter 或通过构造函数参数将该实现提供给库
- 让库根据需要调用接口(interface)实现上的方法
- 确保您不会通过执行所有这些操作引入任何类型的垃圾收集问题
从字面上“从库项目中的类获取对我的主项目中的类的引用”的唯一方法是通过反射,这很慢并且难以维护代码。
关于android - 从库类访问主项目类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7957167/