使用 DaggerHilt 注入 ComponentActivity 类

问题描述 投票:0回答:1

我有一个使用活动合约来选择铃声的实现类:

 class RingtonePickerImpl @Inject constructor( activity: ComponentActivity )
    : RingtonePicker {
    
        private val ringtonePickerLauncher = activity.registerForActivityResult(
                ActivityResultContracts.StartActivityForResult()) { result -> .. 
}

我正在使用

@Inject constructor()
来注入组件活动。

我在我的

di模块
上提供了@Provides功能,如下:

@Module
@InstallIn(ActivityComponent::class)
object ActivityModule {

    @Provides
    @ActivityScoped
    fun provideComponentActivity(activity: ComponentActivity): ComponentActivity {
        return activity
    }

我也尝试过这个方法:

@Provides
    fun provideComponentActivity(@ActivityContext context: Context): ComponentActivity {
        return context as ComponentActivity
    }

但是,我仍然收到此错误:

错误:[Dagger/MissingBinding] androidx.activity.ComponentActivity 如果没有 @Inject 构造函数或 @Provides-注解的方法。

我已经检查过我在代码中使用了必要的

@Inject
构造函数。 是否有安全注入该组件的解决方法?

android android-activity dependency-injection dagger-hilt
1个回答
0
投票

为什么要注入ComponentActivity?这没有多大意义。编译器说你需要在 ComponentActivity 的构造函数中使用 @Inject,但你不能这样做。

© www.soinside.com 2019 - 2024. All rights reserved.