
[英]ViewModel has no zero argument constructor at java.lang.Class.newInstance(Native Method)
[英]ViewModel has no zero argument constructor at java.lang.Class.newInstance
注意:在标记为重复之前,请仔细阅读。 我已经尝试了所有现有的答案。
我正在使用匕首2。
查看 Model 实例在活动中成功创建,但是当我从同一个活动中打开 BottomSheetDialog 时,无法创建实例。
private val searchViewModel: SearchViewModel by activityViewModels()
日志:
ui.search.viewmodel.SearchViewModel> has no zero argument constructor at java.lang.Class.newInstance(Native Method) at androidx.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.java:219) at androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory .create(ViewModelProvider.java:278) at androidx.lifecycle.SavedStateViewModelFactory.create(SavedStateViewModelFactory.java:106) at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:185) at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider. java:150) 在 androidx.lifecycle.ViewModelLazy.getValue(ViewModelProvider.kt:54) 在 androidx.lifecycle.ViewModelLazy.getValue(ViewModelProvider.kt:41)
在 dagger 2 中,每当我们创建Shared viewmodel时,我们都必须像这样编写工厂:
@Provides
fun providesSearchViewModel(
activity: SearchActivity,
factory: ViewModelProvider.Factory
): SearchViewModel {
return ViewModelProvider(activity, factory).get(SearchViewModel::class.java)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.