java - Dagger:多次注入(inject)的类中没有可注入(inject)成员

标签 java android dependency-injection code-injection dagger

尝试将 2 个模块注入(inject)类时收到错误消息:

Error:(18, 8) error: No injectable members on ...SQLiteHandler.
Do you want to add an injectable constructor? required by ...activity.AuthenticatorActivity 
for ...ServerHandlerModule


Error:(18, 8) error: No injectable members on ...ServerHandler.
Do you want to add an injectable constructor? required by ....activity.AuthenticatorActivity 
for ...Modules.SQLiteHandlerModule

我无法理解此错误消息,因为这两个模块似乎彼此没有任何关系。在我添加 ServerHandlerModule 之前注入(inject)就可以工作,但是当它们都注入(inject)时它们似乎互相干扰。

SQLiteHandlerModule:

@Module(injects = {AuthenticatorActivity.class, MainActivity.class})
public class SQLiteHandlerModule  {

private final Context context;

public SQLiteHandlerModule(Context context) {
    this.context = context;
}

@Provides
@Singleton
SQLiteHandler providesSQLiteHandler(@ForApplication Context context) {
    return new SQLiteHandler(context);
}

@Provides
@Singleton
@ForApplication
Context provideApplicationContext() {
    return context;
}
}

服务器处理模块:

@Module(injects = {AuthenticatorActivity.class})
public class ServerHandlerModule {

public ServerHandlerModule() {}

@Provides
@Singleton
ServerHandler providesServerHandler() {
    return new ServerHandler();
}

}

validator Activity :

public class AuthenticatorActivity extends AccountAuthenticatorActivity {
@Inject
SQLiteHandler db;
@Inject
ServerHandler serverHandler;

private ObjectGraph objectGraph;


@Override
protected void onCreate(Bundle savedInstanceState) {
    objectGraph = ObjectGraph.create(getModules());
    objectGraph.inject(this);
}

…

protected List<Object> getModules() {
    return Arrays.asList(new SQLiteHandlerModule(this), new ServerHandlerModule());
}
}

有谁知道我需要添加什么来解决这个问题?

最佳答案

Dagger 需要对要注入(inject)的类的构造函数进行注释。

@Inject
public SQLiteHandler(@ForApplication Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
    this.context = context;
}

@Inject
public ServerHandler() {
}

关于java - Dagger:多次注入(inject)的类中没有可注入(inject)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34926536/

相关文章:

android - Activity 中的全屏背景图像

android - 由于 Target 和 CPU/ABI 设置而无法创建 Android AVD?

c# - 使用插件覆盖 autofac 注册

ios - UIViewControllers iOS swift 中的依赖注入(inject)

java - 部分模拟一个对象以进行单元测试

java - 来自抽象类的父类(super class)的模拟字段

java - 使用 Jackson 忽略最外层的 JSON 元素

java - 我怎样才能使用util :list in spring configuration file

java - 工具栏的问题

c# - 使用 caSTLe windsor 在控制台应用程序中使用特定命名空间在程序集中安装服务