无法以编程方式从另一个模块获取资源
Can't programmatically get resource from another module
我有一个包含多个 gradle 模块的 android 项目。模块之间的依赖关系如下所示:
应用 <-- 核心模块 <-- 功能模块
核心模块中有一个资源(字符串和颜色)。
当我在功能模块的布局中使用它们时,一切正常,它们可用并按预期工作。
但是,当我尝试从 featuremodule 中以编程方式在 Activity 中获取它们时,我得到一个异常:Unresolved reference: R
所以 android:text="@string/res_from_core_module"
有效 而 myTextView.setText(R.string.res_from_core_module)
无效 .
有谁知道为什么会发生这种情况以及如何解决这个问题?
我认为 R 指向您应用的资源。检查文件开头的导入。
您应该像这样在方法中明确指向 Resource 文件夹:
myTextView.setText(com.coremodule.R.string.res_from_core_module)
请这样使用:
myTextView.setText(getString(R.string.res_from_core_module));
出现这种行为的原因是添加 'coremodule' 依赖 compileOnly。
build.gradle 应用模块看起来像:
dependencies {
...
compileOnly project(path: ':coremodule')
...
}
如果将 compileOnly 更改为 implementation(或 api)一切正常
dependencies {
...
implementation project(path: ':coremodule')
...
}
将此添加到所有模块以共享资源、类、功能
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
...
}
最新回答!!!它将使您的应用程序模块可以访问所有内容。
dependencies {
...
api project(': coremodule')
...
}
我有一个包含多个 gradle 模块的 android 项目。模块之间的依赖关系如下所示:
应用 <-- 核心模块 <-- 功能模块
核心模块中有一个资源(字符串和颜色)。
当我在功能模块的布局中使用它们时,一切正常,它们可用并按预期工作。 但是,当我尝试从 featuremodule 中以编程方式在 Activity 中获取它们时,我得到一个异常:Unresolved reference: R
所以 android:text="@string/res_from_core_module"
有效 而 myTextView.setText(R.string.res_from_core_module)
无效 .
有谁知道为什么会发生这种情况以及如何解决这个问题?
我认为 R 指向您应用的资源。检查文件开头的导入。
您应该像这样在方法中明确指向 Resource 文件夹:
myTextView.setText(com.coremodule.R.string.res_from_core_module)
请这样使用:
myTextView.setText(getString(R.string.res_from_core_module));
出现这种行为的原因是添加 'coremodule' 依赖 compileOnly。
build.gradle 应用模块看起来像:
dependencies {
...
compileOnly project(path: ':coremodule')
...
}
如果将 compileOnly 更改为 implementation(或 api)一切正常
dependencies {
...
implementation project(path: ':coremodule')
...
}
将此添加到所有模块以共享资源、类、功能
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
...
}
最新回答!!!它将使您的应用程序模块可以访问所有内容。
dependencies {
...
api project(': coremodule')
...
}