如何从另一个子模块访问子模块的布局?

时间:2017-10-05 01:34:18

标签: android

我的android项目中有两个模块。我希望这两个模块都能访问其他模块的布局文件,并执行Intent()等操作。

但是,使用compile project (':x ')并不适用于此。

编辑: 这两个模块都已成功添加到项目中,并且gradle已正确同步并且清单已合并。我想如何从另一个模块的java文件访问一个模块的res / layout文件。对于上下文,我在模块1中有activityA.xml,我需要在模块2中,这样当在模块2中单击一个按钮时,它有意图转换到ActivityA.xml。

1 个答案:

答案 0 :(得分:1)

好的,所以要使用其他模块的资源,你必须做一些事情。

确定如何打包和使用模块。模块是“只是”适用于此应用程序还是在其他应用程序中使用。

如果它被多个项目使用,那么我建议将其打包为AAR并托管在您自己的Maven Repo中,并通过Gradle拉取以避免项目依赖于代码库本身。

如果它只用于这个项目,那么你也必须做几件事。

1)确保settings.gradle包含模块。您可以使用simple:moduleName执行此操作,如果它是项目目录的本地目录。否则你可以用

来做
include 'myLib'
project(':myLib').projectDir = new File('../../../workspace/libs/myLib')

完成此操作后,确认Gradle Sync将模块拉入项目。而不只是一个带有IML的空文件夹。如果是空文件夹,请确认您的路径并重试。

步骤2)因此,您成功导入了模块,您可以在目录中看到它。但是,您不能拥有依赖于应用程序的模块,而应用程序依赖于模块。它被称为循环依赖,因此您只能让应用程序依赖于模块。转到应用程序的模块

apply plugin: 'com.android.application'

并转到依赖项部分并包含

    compile ':myLib'

现在您需要确认您的编译myLib是否正常工作(myLib是您的lib的名称)。要确认您可以从终端执行assembleRelease并查看它是否有任何问题,或者您也可以执行Gradlesync。

如果有效,您现在可以通过在顶部包含import语句将资源或文件导入父app模块的任何Activity中。

现在你可以做一些像HelperClass.doSomething(其中helperClass存在于myLibs中)。

让我们更进一步。也许您需要HelperClass才能响应应用程序模块。然后你必须使用你要调用的任何方法在IMyCallBack的myLib中提供一个接口,让父模块调用activity实现回调接口。

这是回答你的问题还是你有另一个问题。如果您的依赖项设置正确,则访问子模块的内容应该没有问题。