Android 匕首/缺失绑定,但模块存在
我正试图把匕首放进我的项目中,我面临着一个编译问题,因为我已经完成了所有类似android开发者教程的工作,所以我没有得到这个问题。我得到: 错误:[Dagger/MissingBinding]如果没有@Providers注释方法,则无法提供INotificationService 以下是我的应用程序注释: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
@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在活动中使用,所以它还可以。