java - 跨 android 风格使用多个类

标签 java android gradle android-gradle-plugin android-productflavors

所以我有一个 android 基础项目,我想拆分成各种风格。分配单独的 xml 很容易,类也是如此。然而,当从基类调用 flavor 类时,问题就出现了。比如说我有:

package app.myapp.service

import app.flavor1.ClassB
import app.flavor2.ClassB
import app.flavor3.ClassB
import app.flavor4.ClassB

public class Class A
{
    Class B bar = new Class B;

    bar.foo();
}

因此,根据风格构建,我仍然想使用它的 B 类实现,但是我不能导入这两个类,因为每个特定风格都无法识别不在该项目结构中的导入。因此,在构建项目时,它将抛出错误,因为无法识别该导入。如果它只有两种口味,我可以做一个 buildconfig 来修复它,但是如果口味变成 2+,它就会成为一个问题。我将如何解决这个问题?或者换句话说,我仍然可以从我的基类中导入多种口味吗?谢谢

最佳答案

我不知道这是否可能,但一个快速的建议是为 ClassB 创建一个接口(interface),然后在风格中说实现,并在每种风格中都有一些代码来将实现设置为用过的。最简单的方法是使用依赖注入(inject),例如:

ClassA.setClassBImplementation(ClassBInterface obj);

并且有一个可以在代码中使用的内部 ClassBInterface 变量。然后,您可以从每种风格的类中调用所述方法来设置正确的实现。

关于java - 跨 android 风格使用多个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29559368/

相关文章:

java - Recyclerview 适配器的 notifyDataSetChanged 不更新 RecyclerView

gradle - 任务 ':app:processDebugResources' .1执行失败

java - 保留部分数字(S4,K2),所有字母和句号,但删除所有其他数字(简单且有小数点的数字)

java - JMS 开发最佳实践

java - 使用 lambdaj 选择列表的前 3 个项目

java - ‘pgp_sym_encrypt’和 ‘pgp_sym_decrypt’带有HSM(硬件安全模块)的机制

java - 无法将 Gradle 构建为 Make 项目

Android 相机功能在部分手机上无法使用

gradle - Gradle doFirst不更新WAR文件

java 1.8 - gradle找不到主类