我今天更新了我的build.gradle文件到最新版本,classpath 'com.android.tools.build:gradle:3.6.3'和最新的ext.kotlin_version = '1.3.72',但是我遇到了标题上的错误:instance()。
private val viewModelFactory: ListViewModelFactory by instance()
这是我的工厂类:
class ListViewModelFactory(
private val listRepository: ListRepository
) : ViewModelProvider.NewInstanceFactory() {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
return ListViewModel(listRepository) as T
}
}
有人能解释一下为什么会出现这个错误,并告诉我怎么去除它吗?谢谢!
附言:如果有帮助的话,我使用 Kodein,这是我的绑定:
bind() from provider { ListViewModelFactory(instance()) }
ListViewModelFactory
仍然是一个带有未指定 T 参数的模板,因为它继承自ViewModelProvider.NewInstanceFactory
。尝试使用ListViewModelFactory<MyTClass>(instance())
。 - Benoit Guinaclass ListViewModel( private val listRepository: ListRepository ) : ViewModel() { val list : Deferred<LiveData<out List<ListItemEntity>>> by lazyDeferred { listRepository.getList() } fun upsertItem(item: ListItemEntity) { listRepository.upsertItem(item) } fun deleteItem(item: ListItemEntity) { listRepository.deleteItem(item) } }
感谢 @BelalKhan 的回复,希望这能有所帮助。 - CasGab