0

我有一个视图模型类 - 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)
    }

}

我确实查找了这个确切的问题并找到了这个。它仍然没有帮助。如果有人能解释什么是错误的以及如何解决它,那将是非常有帮助的。

4

0 回答 0