gpt4 book ai didi

android - 如何使用 dagger.android 将 Activity 注入(inject)另一个类?

转载 作者:行者123 更新时间:2023-11-29 02:40:51 24 4
gpt4 key购买 nike

我正在使用新的 dagger.android 方法注入(inject) Activity,但我想知道如果要将 Activity 注入(inject)到类中该怎么办?可能是需要当前 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

...
}

也许对于每个 Activity 这样的事情可能会起作用?

@Binds abstract fun bindActivity(yourActivity: YourActivity): Activity

但我不喜欢必须为所有 Activity 编写此代码的想法,是否有更好的方法?

最佳答案

不幸的是,dagger-android-processor 不会自动创建此绑定(bind)。

您还需要一个模块:

@Module
interface RegisterModule {
@Binds
fun bindActivity(activity: RegisterActivity): Activity
}

在您的 ActivityBindingModule 中:

@ContributesAndroidInjector(modules = arrayOf(RegisterModule::class))
abstract fun contributeRegisterActivity(): RegisterActivity

关于android - 如何使用 dagger.android 将 Activity 注入(inject)另一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44268237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com