我正在使用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);
}
`
有关如何正确注射的任何建议。