Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 匕首/缺失绑定,但模块存在_Android_Kotlin_Dagger 2_Dagger Hilt - Fatal编程技术网

Android 匕首/缺失绑定,但模块存在

Android 匕首/缺失绑定,但模块存在,android,kotlin,dagger-2,dagger-hilt,Android,Kotlin,Dagger 2,Dagger Hilt,我正试图把匕首放进我的项目中,我面临着一个编译问题,因为我已经完成了所有类似android开发者教程的工作,所以我没有得到这个问题。我得到: 错误:[Dagger/MissingBinding]如果没有@Providers注释方法,则无法提供INotificationService 以下是我的应用程序注释: @HiltAndroidApp class App : MultiDexApplication() { @AndroidEntryPoint class MainActivity: App

我正试图把匕首放进我的项目中,我面临着一个编译问题,因为我已经完成了所有类似android开发者教程的工作,所以我没有得到这个问题。我得到:

错误:[Dagger/MissingBinding]如果没有@Providers注释方法,则无法提供INotificationService

以下是我的应用程序注释:

@HiltAndroidApp
class App : MultiDexApplication() {
@AndroidEntryPoint
class MainActivity: AppCompatActivity() {
@AndroidEntryPoint
class NotificationFragment: Fragment(R.layout.fragment_notification) {
活动注释:

@HiltAndroidApp
class App : MultiDexApplication() {
@AndroidEntryPoint
class MainActivity: AppCompatActivity() {
@AndroidEntryPoint
class NotificationFragment: Fragment(R.layout.fragment_notification) {
片段注释:

@HiltAndroidApp
class App : MultiDexApplication() {
@AndroidEntryPoint
class MainActivity: AppCompatActivity() {
@AndroidEntryPoint
class NotificationFragment: Fragment(R.layout.fragment_notification) {
我想在那之前一切都很好。那么我面临的问题是:

Viewmodel类:

@HiltViewModel
class NotificationViewModel @Inject constructor(private val notificationService: INotificationService): ViewModel()
以下是INotificationService的接口:

interface INotificationService {
    fun refreshNotification(): Single<List<INotification>>
    fun markAsRead(notification: INotification)
}
与相关模块:

@Module
@InstallIn(ActivityComponent::class)
abstract class NotificationModule {
    @Binds
    abstract fun bindNotificationService(impl: NotificationServiceImpl): INotificationService
}

模块中的bindNotificationService绑定函数是灰色的,android开发者教程中不是这样的,这个错误让我觉得我错过了一些东西,无法在编译时找到这个函数,但因为有@module和@InstallIn(ActivityComponent::class)我完全不知道它为什么不编译。

INotificationService是ViewModel依赖项,它应该与ViewModel生命周期绑定,而不是这个

@Module
@InstallIn(ActivityComponent::class)
abstract class NotificationModule {
    @Binds
    abstract fun bindNotificationService(impl: NotificationServiceImpl): INotificationService
}
使用以下命令:-

@Module
@InstallIn(ViewModelComponent::class)
abstract class NotificationModule {
    @Binds
    abstract fun bindNotificationService(impl: NotificationServiceImpl): INotificationService
}

您应该使用
@InstallIn(ViewModelComponent::class)
@IR42非常感谢。我没有检查所有这些组件类,尽管如此,因为viewmodel在活动中使用,所以它还可以。