AndroidViewModel的Android getViewModelStoreOwner,无零参数构造函数错误

AndroidViewModel的Android getViewModelStoreOwner,无零参数构造函数错误,android,viewmodel,android-jetpack,android-viewmodel,android-jetpack-navigation,Android,Viewmodel,Android Jetpack,Android Viewmodel,Android Jetpack Navigation,我使用的是导航组件的beta版,我的代码工作正常,然后换回最新的非beta版,它停止工作,但从我所看到的,我没有使用任何beta版:-) 我想将视图模型的范围扩展到导航图我通过获取nav控制器存储所有者来实现这一点,这适用于ViewModel,但不适用于AndroidViewModel,尝试时会抛出一个错误,因为它需要一个无零参数构造函数,AndroidViewModel不是这种情况,但如上所述,这在测试版中有效 private ViewModelStoreOwner getStoreOwner

我使用的是导航组件的beta版,我的代码工作正常,然后换回最新的非beta版,它停止工作,但从我所看到的,我没有使用任何beta版:-)

我想将视图模型的范围扩展到导航图我通过获取nav控制器存储所有者来实现这一点,这适用于ViewModel,但不适用于AndroidViewModel,尝试时会抛出一个错误,因为它需要一个无零参数构造函数,AndroidViewModel不是这种情况,但如上所述,这在测试版中有效

private ViewModelStoreOwner getStoreOwner() {

        NavController navController = Navigation
                .findNavController(requireActivity(), R.id.root_navigator_fragment);
        return navController.getViewModelStoreOwner(R.id.root_navigator);

}
将其与

singleCardViewModel = new ViewModelProvider(getStoreOwner()).get(SingleCardViewModel.class);
因此,我有几种方法可以使这项工作

1) 将android视图模型替换为普通视图模型,大多数视图模型都可以这样做,但是有些视图模型需要应用程序来调用我的数据库

2) 我可以把它们换成视图模型,然后让工厂将其传递给应用程序

3) 我可以通过传递'this'而不是getStoreOwner来替换片段的getStoreOwner,但这可能意味着需要进行更多的测试,以确保其不包含值

4) 继续使用测试版,如果可能的话,我宁愿避免这种情况


这些都不是很理想,难道这不管用吗?我是否做了一些明显错误的事情?

返回测试版只是为了检查,这肯定没有这个问题,即使您可以使用
AndroidViewModel获取应用程序上下文
我不建议对ViewModel中的上下文执行任何操作,为什么不将事情委托给活动或片段并从那里使用它呢?相当确定使用与生命周期相关联,因此在本例中使用是可以的事实上,我认为这就是它的构建目的,无论我使用它初始化存储库中的数据库,因此不能帮助编辑
androidx.core
之间的版本不匹配,
androidx.fragment
androidx.lifecycle