我有一个视图模型类 - NotifyVM - 它应该在其构造函数中采用 DAO。我使用了@HiltViewModel和@Inject注释。错误是当我尝试使用属性委托初始化片段中的视图模型时by viewModels():
分类器“NotifyVM”没有伴随对象,因此必须在此处初始化
我对 Kotlin 很陌生,正在尝试学习 MVVM 架构。我对这个错误完全一无所知。
我的视图模型类:
@HiltViewModel
class NotifyVM @Inject constructor(private val notifyDao: NotifyDao): ViewModel() {
}
依赖注入对象:
@Module
@InstallIn(SingletonComponent::class)
object AppModule {
@Provides
@Singleton
fun provideDatabase(application: Application) =
Room.databaseBuilder(application, NotifyDatabase::class.java,
"notify_database")
.fallbackToDestructiveMigration()
.build()
@Provides
fun provideNotifyDao(db: NotifyDatabase) = db.notifyDao()
@Provides
@Singleton
fun providesApplicationScope() = CoroutineScope(SupervisorJob())
}
实例化视图模型的片段:
@AndroidEntryPoint
class SavedNotifications : Fragment(R.layout.fragment_saved_notifications) {
val viewModel = NotifyVM by viewModels() // THIS HAS THE RED WAVY LINE UNDER NotifyVM
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
}
}
我确实查找了这个确切的问题并找到了这个。它仍然没有帮助。如果有人能解释什么是错误的以及如何解决它,那将是非常有帮助的。