android - 如何从子模块访问生成的值到父模块?
问题描述
按照本教程,我正在将我的 android 应用程序转换为即时应用程序。
目前,我已将我的应用程序模块拆分为两个:
- 包含代码的基本模块
- 已安装模块,用于应用的非即时应用版本
在拆分之前,在我唯一的模块(app)中,我使用的是google-services
插件。拆分后,我已将插件移动到已安装的模块中,因为它似乎需要在此处才能strings.xml
从google-services.json
文件生成。
问题是,在基本模块中,我有一些代码试图访问由谷歌服务插件生成的变量:R.string.default_web_client_id
现在不可用,产生编译错误。
我需要以某种方式从基本模块访问生成的值,而不引入循环依赖...
解决方案
您只是无法从父模块访问子模块的类或值。
当我第一次将项目转换为模块以便将其作为即时应用程序运行时,我遇到了同样的问题。我成功应用来克服它的解决方案是在父模块的类中创建 set 方法,这些方法使用子模块中的值,并从子模块的类中调用它们。
例子:
在父模块中,您有
class ParentModuleClass {
private String defaultWebClientID = null;
public void setDefaultWebClientID (String defaultWebClientID) {
this.defaultWebClientID = defaultWebClientID;
}
private yourMethod () {
...
if (defaultWebClientID != null) {
//use defaultWebClientID
}
...
}
}
在子模块中你有这个构造函数
import com.app.parent.ParentModuleClass;
import com.app.child.R;
class ChildModuleClass {
public ChildModuleClass (ParentModuleClass parentClassObj) {
parentClassObj.setDefaultWebClientID(R.string.default_web_client_id);
}
}
推荐阅读
- amazon-web-services - 从 Lagom 连接到 AWS Managed Cassandra 服务
- powershell - 在 foreach 循环中排除多个 OU
- swift - 如何压缩超过 4 个发布者
- c# - 如何在 Firebase 云存储中配置路径
- .net - EF Core 可以映射 GET(计算)属性吗?
- sql - 大型数据库在 SQLite 中是否高效?
- perl - 使用 Mechanize 发布没有名称的表单
- bash - GNU 并行 - 如何处理没有空格或换行的列分隔符?
- recursion - SCHEME::R5RS 递归使用地图
- javascript - 使用 useState 有条件地更新状态的一部分