芬兰湾的科特林中使用Dagger2可能遇到的坑解决

  

  

Dagger2是一款基于Java注解,在编译阶段完成依赖注入的开源库,主要用于模块间解耦,方便进行测试。

  

  

<强> build.gradle

        应用插件:“com.android.library”   应用插件:“kotlin-android”   应用插件:“kotlin-kapt”      …      依赖关系{   …//dagger2   编译rootProject.ext.dependencies(“匕首”)   kapt rootProject.ext.apt (“dagger-compiler”)//dagger2 android一个dagger2关于android的增强库可选项   编译rootProject.ext.dependencies (“dagger-android”)//可选的项   编译rootProject.ext.dependencies (“dagger-android-support”)//可选的项   kapt rootProject.ext.apt (“dagger-android-processor”)   }      

<强> AppComponent

        @ singleton   @ component(模块=劳动力素质(AppModule::类))   接口AppComponent {   有趣的注入(app: BaseApplication)   }      

<强> AppModule

        @Module   类AppModule (val应用:应用程序){   @Provides   @ singleton   乐趣provideApplication()=应用   }      

<强>应用

        类BaseApplication:应用程序(){      覆盖乐趣>   MainContract类MainActivity: AppCompatActivity ()。视图{         @ inject   var mPresenter: MainContract。主持人& # 63;=零         覆盖乐趣>   公众最终类MainActivity AppCompatActivity延伸实现视图{   @ inject   @Nullable   私人主持人mPresenter;   - - - - - -省略   }         //于是将上述代码改成   @ inject   @JvmField   var mPresenter: MainContract。主持人& # 63;=零//或则   @ inject   lateinit mPresenter: MainContract.Presenter      

即可编译成功

  

<强>坑2

        @ inject   @JvmField//@ named (preneter)//错误正确的做法如下   @field(命名(“preneter”)):   var mPresenter: MainContract。主持人& # 63;=null            @Module   内部类PresenterModules {      @Provides   @ named (“preneter”)   乐趣providePresenter (): MainContract。主持人{   返回MainPresenter (this@MainActivity)   }      @Provides   @ named (“hello”)   有趣的提供():字符串{   返回“你好”   }   }      

  

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。

芬兰湾的科特林中使用Dagger2可能遇到的坑解决