我正在尝试将ViewModelProvider用于android动态功能库,该库正在添加到现有项目中。我的AppCompatActivity类中包含以下代码。
MyModel model = new ViewModelProvider(this).get(MyModel.class);
该项目正在使用androidx生命周期库的2.2.0版本。从我的gradle文件中:
implementation 'androidx.appcompat:appcompat:1.1.0'
def lifecycle_version = "2.2.0"
// ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
我在运行时遇到以下错误。
java.lang.NoSuchMethodError: No direct method <init>(Landroidx/lifecycle/ViewModelStoreOwner;)V in class Landroidx/lifecycle/ViewModelProvider; or its super classes (declaration of 'androidx.lifecycle.ViewModelProvider' appears in.....apk
这是一个错误吗?我在较大的应用程序中是否已有某些依赖项?如果以某种方式使用现有应用程序中的ViewModelProvider较旧版本,该如何解决依赖性问题?我曾想过,通过在gradle文件中命名依赖项的显式版本,可以避免这种冲突。
最佳答案
我有一个类似的问题。我不知道为什么,但是当我使用弃用的类ViewModelProviders
时,它可以很好地工作。
MyModel model = new ViewModelProviders.of(this).get(MyModel.class);