我有一个使用活动合约来选择铃声的实现类:
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
构造函数。
是否有安全注入该组件的解决方法?
为什么要注入ComponentActivity?这没有多大意义。编译器说你需要在 ComponentActivity 的构造函数中使用 @Inject,但你不能这样做。