【发布时间】:2020-04-21 07:43:04
【问题描述】:
我今天已将我的 build.gradle 文件更新到最新版本
类路径 '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())。 -
它不起作用它说:构造函数 ListViewModelFactory(listRepository:ListRepository) 和 instance() 没有预期的类型参数,它现在说 Property getter or setter expected.
-
也发布您的 ViewModel 类。
-
这里是:
class 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 的回复,希望对您有所帮助
标签: android kotlin build.gradle