【发布时间】:2018-01-25 20:26:31
【问题描述】:
我有这个模块用于我的活动绑定:
@Module
abstract class ActivityBuilder {
@ActivityScope
@ContributesAndroidInjector(modules = [BaseActivityModule::class])
abstract fun bindsActivity(): BaseActivity
@ActivityScope
@ContributesAndroidInjector(modules = [MainActivityModule::class])
abstract fun bindMainActivity(): MainActivity
}
BaseActivityModule
@Module
abstract class BaseActivityModule {
@Binds
@ActivityScope
abstract fun provideProgressDialogManager(manager: ProgressDialogManager): ProgressManager
}
ProgressDialogManager
class ProgressDialogManager : ProgressManager {
private var activity: Activity;
private var instance: AtomicReference<ProgressDialog> = AtomicReference<ProgressDialog>();
@Inject
constructor(activity: BaseActivity){
this.activity = activity as Activity
this.instance.set(getDialog())
}
我的组件:
@Singleton
@Component(modules = [ApplicationModule::class, AndroidSupportInjectionModule::class, ActivityBuilder::class, ApplicationServiceModule::class, HTTPClientModule::class, ServicesModule::class])
public interface AceleraApplicationComponent : AndroidInjector<DaggerApplication> {
fun inject(app: AceleraApplication)
override fun inject(instance: DaggerApplication)
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: Application): Builder
fun build(): AceleraApplicationComponent
}
}
但如果我这样做:
abstract class BaseActivity : DaggerAppCompatActivity(), SalesforceActivityInterface, BaseView {
private var logger: Logger = br.com.rede.acelera.util.Logger.create(javaClass)
private var sf: SalesforceActivityDelegate = SalesforceActivityDelegate(this)
@Inject
lateinit var progress: ProgressManager
}
我有这个构建错误:
e: /Users/rafael-iteris/Documents/afvc/acelera/app/build/tmp/kapt3/stubs/devProdDebug/br/com/rede/acelera/component/AceleraApplicationComponent.java:6: 错误:[dagger.android.AndroidInjector.inject(T)] br.com.rede.acelera.util.ProgressManager 如果没有 @Provides- 或 @Produces- 注释方法。 e:
e:公共抽象接口 AceleraApplicationComponent 扩展 dagger.android.AndroidInjector { e: ^ e: br.com.rede.acelera.util.ProgressManager 在 e 处注入: br.com.rede.acelera.base.BaseActivity.progress e:
br.com.rede.acelera.activity.main.MainActivity 在 e:
注入 dagger.android.AndroidInjector.inject(arg0) e: 绑定 组件中存在匹配键: br.com.rede.acelera.module.ActivityBuilder_BindsActivity.BaseActivitySubcomponent e: java.lang.IllegalStateException: 分析失败: org.jetbrains.kotlin.kapt3.diagnostic.KaptError:出错时 注释处理
知道为什么吗?
【问题讨论】: