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”) 有趣的提供():字符串{ 返回“你好” } }
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。