提问人:Murphler 提问时间:5/3/2021 更新时间:5/3/2021 访问量:537
java.lang.RuntimeException:无法创建类 com.example.breatheeasy.userinterface.viewmodels.MainViewModel 的实例
java.lang.RuntimeException: Cannot create an instance of class com.example.breatheeasy.userinterface.viewmodels.MainViewModel
问:
因此,我开始在以前工作正常的 Fragment 和 ViewModel 上出现以下错误
java.lang.RuntimeException: Cannot create an instance of class com.example.breatheeasy.userinterface.viewmodels.MainViewModel
有问题的 ViewModel 的代码是
class MainViewModel @ViewModelInject constructor(
private val mainRepository: MainRepository) : ViewModel() {
val runsSortedByDate = mainRepository.getAllRunsByDate()
fun insertRun (run : Run) = viewModelScope.launch {
mainRepository.insertRun(run)
}
片段的代码如下。我拿出了很多内部代码,除了在 onViewCreated 方法中请求 ViewModel 实例时应用程序崩溃的地方
@AndroidEntryPoint
class RunFragment : Fragment(R.layout.fragment_run), EasyPermissions.PermissionCallbacks {
private val viewModel: MainViewModel by viewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewModel.runsSortedByDate.observe(viewLifecycleOwner, Observer {
runAdapter.submitList(it)
})
}
}
就像我说的那样,在我添加另一个具有自己的视图模型的片段之前,它运行良好,但似乎这个错误与这个新的片段和视图模型没有任何关系,因为它们仅在我单击底部导航中的相关选项时才会调用。我什至没有走到这一步,该应用程序立即崩溃,因为它默认在上面显示的片段上打开。
非常感谢
答: 暂无答案
评论
class MainRepository @Inject constructor(val runDAO: RunDAO) { suspend fun insertRun(run: Run) = runDAO.insertRun(run) suspend fun deleteRun(run: Run) = runDAO.deleteRun(run) fun getAllRunsByDate() = runDAO.getAllRunsByDate() }
编辑:不确定如何在注释中正确格式化代码,但这是 MainRepository