在同时使用Java和Kotlin的项目中使用Inject依赖项Dagger的正确方法是什么?

时间:2019-08-07 15:41:05

标签: android kotlin dagger

我正在使用Dagger进行依赖注入。该项目包括Java和Kotlin。 Java中的依赖注入效果很好,现在我正在Kotlin中创建代码,并且出现了错误。我使用kapt的{​​{1}}

我将依赖项注入到Fragment中。我正在尝试注入ViewModelFactory(当我在Kotlin中不使用依赖项注入时可以使用。)

annotationProcessor

上面的代码导致错误

@Inject lateinit var factoryViewModel: ViewModelFactory

如果我尝试:

error: cannot access NotNull class file for org.jetbrains.annotations.NotNull not found Consult the following stack trace for details.

我得到了错误

@Inject
     var factoryViewModel: ViewModelFactory?=null

ViewModelFactory绑定在ViewModelModule中

error: Dagger does not support injection into private fields
private com.package.id.ViewModelFactory factoryViewModel;

在Application类中实例化的app组件是

@Module
public abstract class ViewModelModule {
@Binds
public abstract ViewModelProvider.Factory 
bindViewModelFactory(ViewModelFactory factory);
...
}

活动和片段类在下面定义。

@Singleton
@Component(modules = {
    AppModule.class,
    AndroidSupportInjectionModule.class,
    ActivityBuilder.class,
    ViewModelModule.class
})

public interface AppComponent {

@Component.Builder
interface Builder {
    @BindsInstance Builder application(MyApplication application);
    Builder appModule(AppModule appModule);
    AppComponent build();
}

void inject(MyApplication application);

}      

                                                   `

有关如何正确注射的任何建议。

0 个答案:

没有答案