Tag: 匕首

DaggerAppComponent未创建

随着匕首2.10我曾经能够通过做创建应用程序组件 sAppComponent = DaggerAppComponent.builder() .appModule(new AppModule(this)) .sessionModule(new SessionModule()) .netModule(new NetModule()) .dataModule(new DataModule()) .build(); 我已经使用AndroidInjector的活动,一切都很好。 现在我切换到2.11,我无法find创建应用程序组件的方式。 在谷歌教程中,我看到: DaggerYourApplicationComponent.create() .inject(this); 被添加到应用程序的onCreate中。 在我的情况DaggerYourApplicationComponent = DaggerAppComponent 。 问题是DaggerAppComponent类不再被创建。 我有: public class App extends android.support.multidex.MultiDexApplication implements HasActivityInjector { @Inject DispatchingAndroidInjector mDispatchingActivityInjector; @Override public void onCreate() { super.onCreate(); sAppComponent = DaggerAppComponent.create().inject(this); //here the error 和: @Singleton @Component(modules = { AppModule.class, MainActivityModule.class, […]

用匕首使用Kotlin

使用Dagger向类中注入依赖关系的最好方法是什么,特别是像Dagger这样的零参数构造函数类,比如Activities? 匕首2可能会改善情况吗? 提前致谢。

不能用Dagger2提供合格的字符串

我试图在这里跟随样本 我已经成功地使用了AndroidInjector的Dagger2,但现在我正在试验新的DaggerApplication和DaggerAppCompatActivity 。 我得到的错误: 错误:(5,1)错误:[dagger.android.AndroidInjector.inject(T)] java.lang.String不能提供没有@Inject构造函数或提供@或@ Produces注释的方法。 我不认为新的Daggerclass正在造成这个问题。 如果我删除@DeviceModel @DeviceModel代码编译。 任何建议? 这里代码: AppComponent.kt @Component(modules = arrayOf( AndroidSupportInjectionModule::class, AppModule::class, MainActivitySubComponent.MainActivityModule::class )) interface AppComponent : AndroidInjector { @Component.Builder abstract class Builder : AndroidInjector.Builder() } AppModule.kt @Module(subcomponents = arrayOf(MainActivitySubComponent::class)) class AppModule { } BuildModule.kt @Module class BuildModule { @Provides @DeviceModel fun provideModel(): String { return MODEL } } […]

从Java转换到Kotlin之后,Dagger的模块不工作

我用Dagger 2为Android创建了简单的应用程序。它有一个共享对象和一个模块。 该模块是: @Module public class MyModule { @Provides @Singleton public Hren providesHren() { return new Hren(); } } 这个模块工作。 但是当我将它转换为Kotlin时,我得到编译时错误: > Task :app:compileDebugJavaWithJavac …../DaggerMyApplicationComponent.java:26: error: cannot find symbol DoubleCheck.provider(MyModule_ProvidesHrenFactory.create(builder.myModule)); ^ symbol: variable MyModule_ProvidesHrenFactory location: class DaggerMyApplicationComponent 1 error 转换后的这个模块: @Module class MyModule { @Provides @Singleton fun providesHren(): Hren { return Hren() } } 怎么了? […]

匕首注射不适用于Kotlin的“物体”

花了大量的时间想弄清楚为什么我的匕首注射不起作用, 我意识到Kotlin中的“对象”types是个问题。 以下行不通,注入的“财产”是空的。 object SomeSingleton { @Inject lateinit var property: Property init { DaggerGraphController.inject(this) } } 但是,下面的DID工作得很好: class NotSingleton { @Inject lateinit var property: Property init { DaggerGraphController.inject(this) } } 我试过谷歌,我试过文件,但我不能指出背后的原因。 另外请注意,我还没有尝试过这与JAVA,JAVA没有反正建立单身人士的概念。 这是为什么? 为什么一个科特林单身人士无法注射成员,但一个非单身人士课程可以?

如何在Java / Kotlin中包含Annotation Processor生成的代码来测试类路径

我有一个Android项目正在从Java迁移到Kotlin。 在这个项目中,我有一个纯Kotlin模块,在这里我使用下面的build.gradle实现一个API客户端: apply plugin: ‘kotlin’ apply plugin: ‘kotlin-kapt’ dependencies { implementation “org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlin_version}” implementation “com.squareup.retrofit2:retrofit:${retrofit_version}” implementation “com.squareup.retrofit2:converter-gson:${retrofit_version}” implementation “com.google.code.gson:gson:${gson_version}” implementation “com.squareup.okhttp3:logging-interceptor:${okhttp_version}” implementation “io.reactivex.rxjava2:rxjava:${rx_java_version}” implementation “io.reactivex.rxjava2:rxkotlin:${rx_kotlin_version}” implementation “com.jakewharton.retrofit:retrofit2-rxjava2-adapter:${retrofit2_rxjava2_adapter_version}” compileOnly “javax.annotation:jsr250-api:${jsr250_version}” implementation “com.google.dagger:dagger:${dagger_version}” kapt “com.google.dagger:dagger-compiler:${dagger_version}” testImplementation “junit:junit:${junit_version}” testImplementation “org.mockito:mockito-core:${mockito_version}” testImplementation “org.hamcrest:hamcrest-junit:${hamcrest_version}” testImplementation “com.squareup.okhttp3:mockwebserver:${mockwebserver_version}” // Dependence injection kaptTest “com.google.dagger:dagger-compiler:${dagger_version}” } unit testing有一个Annotation Processor依赖关系: kaptTest “com.google.dagger:dagger-compiler:${dagger_version}” 我可以在build / generated / […]

科特林匕首不注射

我最近从java移动到kotlin,并尝试实施匕首2dependency injection。 我已经添加到我的gradle apply plugin: ‘kotlin-kapt’ implementation “com.google.dagger:dagger:2.11” kapt “com.google.dagger:dagger-compiler:2.11” compileOnly ‘javax.annotation:jsr250-api:1.0’ 这是我的模块 @Module class AppModule(val context : Context) { @Provides @Singleton fun provideContext() = context } 这是我的组件 @Singleton @Component(modules = arrayOf(AppModule::class)) interface AppComponent { fun inject(application: Application) } 这是我的应用程序 class MyApplication : Application() { @Inject lateinit var context : Context lateinit var appComponent : […]