我正在使用新的dagger.android方法来注入活动,但是我想知道如果要将Activity
注入类中该怎么办?也许是需要当前活动的Navigator
类:
package com.abydos.messenger.ui
import android.app.Activity
import com.abydos.messenger.ui.register.RegisterActivity
import org.jetbrains.anko.startActivity
import javax.inject.Inject
class Navigator @Inject constructor(private val activity: Activity) {
fun register() {
activity.startActivity<RegisterActivity>()
}
...
}
并在ActivityBindingModule.kt
package com.abydos.messenger.di
import com.abydos.messenger.ui.register.RegisterActivity
import dagger.Module
import dagger.android.ContributesAndroidInjector
@Module
abstract class ActivityBindingModule {
@ContributesAndroidInjector
abstract fun contributeRegisterActivity(): RegisterActivity
...
}
对于每项活动,这样的事情可能有用吗?
@Binds abstract fun bindActivity(yourActivity: YourActivity): Activity
但我不喜欢为所有活动写这个的想法,有更好的方法吗?
答案 0 :(得分:0)
不幸的是,dagger-android-processor不会自动创建此绑定。
您还需要一个模块:
@Module
interface RegisterModule {
@Binds
fun bindActivity(activity: RegisterActivity): Activity
}
在ActivityBindingModule中:
@ContributesAndroidInjector(modules = arrayOf(RegisterModule::class))
abstract fun contributeRegisterActivity(): RegisterActivity