我正在尝试将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);

10-04 15:59