【发布时间】:2019-12-17 01:37:05
【问题描述】:
当我创建 ViewModelFactory 以将我的 UseCase 与存储库一起传递时出现此错误
viewModelFactory
>class LoginVMFactory(private val useCase: PostUserTokenImpl):ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
return modelClass.getConstructor(PostUserTokenImpl::class.java).newInstance(useCase)
}
}
查看
private val viewModel by lazy { ViewModelProviders.of(this, LoginVMFactory(PostUserTokenImpl(UserRepoImpl()))).get(LoginViewModel::class.java) }
视图模型
class LoginViewModel(private val useCase: PostUserToken): ViewModel() {
...
}
错误日志
引起:java.lang.NoSuchMethodException:[类 com.test.domain.PostUserTokenImpl] 在 java.lang.Class.getConstructor0(Class.java:2327) 在 java.lang.Class.getConstructor(Class.java:1725) 在 com.test.presentation.viewmodel.LoginVMFactory.create(LoginVMFactory.kt:13)
错误日志指向这个
return modelClass.getConstructor(PostUserTokenImpl::class.java).newInstance(useCase)
【问题讨论】:
-
您能分享一下您的
LoginViewModel及其构造函数吗? -
看起来 PostUserTokenImpl 没有合适的构造函数
-
ViewModel 添加 @ianhanniballake PostUserToken 是 PostUserTokenImpl 中实现的接口
-
我已经发布了视图模型@ianhanniballake