Android ViewModel在java.lang.Class.newInstance中没有零参数构造函数
注:在标记为副本之前,请仔细阅读。我已经尝试了所有现有的答案 我用的是匕首2 视图模型实例已在活动中成功创建,但当我从同一活动打开BottomSheetDialog时,无法创建实例Android ViewModel在java.lang.Class.newInstance中没有零参数构造函数,android,kotlin,dagger-2,Android,Kotlin,Dagger 2,注:在标记为副本之前,请仔细阅读。我已经尝试了所有现有的答案 我用的是匕首2 视图模型实例已在活动中成功创建,但当我从同一活动打开BottomSheetDialog时,无法创建实例 private val searchViewModel: SearchViewModel by activityViewModels() 日志: ui.search.viewmodel.SearchViewModel>没有零参数构造函数 位于java.lang.Class.newInstance(本机方法) 在an
private val searchViewModel: SearchViewModel by activityViewModels()
日志:
ui.search.viewmodel.SearchViewModel>没有零参数构造函数
位于java.lang.Class.newInstance(本机方法)
在androidx.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.java:219)中
在androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.java:278)
在androidx.lifecycle.SavedStateViewModelFactory.create(SavedStateViewModelFactory.java:106)
位于androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:185)
位于androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:150)
位于androidx.lifecycle.ViewModelLazy.getValue(ViewModelProvider.kt:54)
位于androidx.lifecycle.ViewModelLazy.getValue(ViewModelProvider.kt:41)
在dagger 2中,无论何时创建共享视图模型,我们都必须这样编写工厂:
@Provides
fun providesSearchViewModel(
activity: SearchActivity,
factory: ViewModelProvider.Factory
): SearchViewModel {
return ViewModelProvider(activity, factory).get(SearchViewModel::class.java)
}
您如何验证它是“在活动中成功创建的”?您的SearchViewModel的构造函数是什么样子的?我正在使用该ViewModel来获取数据,然后不会崩溃。您没有通过activityViewModels()将任何工厂传递给
。你在哪里定义你的自定义视图模型工厂?@ianhanniballake你是对的,我错过了这个