我正在使用新的 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>()
}
...
}
And in 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
但我不喜欢必须为所有活动编写这个想法,有更好的方法吗?
不幸的是 dagger-android-processor 不会自动创建此绑定。
您还需要一个模块:
@Module
interface RegisterModule {
@Binds
fun bindActivity(activity: RegisterActivity): Activity
}
在您的 ActivityBindingModule 中:
@ContributesAndroidInjector(modules = arrayOf(RegisterModule::class))
abstract fun contributeRegisterActivity(): RegisterActivity
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)