Biswas Khayargoli
Biswas Khayargoli

Reputation: 1024

Cannot use ViewModelProvider after the update, ViewModelProvider has private access, how do I access it?

I get the following error when trying to use ViewModelProvider:

 BeaconViewModel beaconViewModel = new ViewModelProvider(LoginActivity.this).get(BeaconViewModel.class);

'ViewModelProvider(androidx.lifecycle.viewmodel.ViewModelProviderImpl)' has private access in 'androidx.lifecycle.ViewModelProvider'

    def room_version = "2.6.1"
    def lifecycle_version = '2.7.0'
 
    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"
    
    implementation "androidx.room:room-rxjava2:$room_version"
    implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"
    implementation 'androidx.lifecycle:lifecycle-common-java8:2.8.2'
    implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version"

Upvotes: 1

Views: 664

Answers (2)

Cosmin C.
Cosmin C.

Reputation: 63

Without downgrading (keep lifecycle_version at 2.8.3 which is currently latest), you can use the following:

implementation "androidx.lifecycle:lifecycle-viewmodel-android:$lifecycle_version"

Keep in mind that you will need to remove some of the other imports for lifecycle as that might give you a gradle error when compiling due to duplicate classes. If you can't remove due to something else being needed, you may follow Problem duplicate class androidx.lifecycle.viewmodel found in modules if you reach that point and can't fix it.

Upvotes: 0

Anusionwu Chikeluba
Anusionwu Chikeluba

Reputation: 455

Using this version of dependencies removed the error and it worked for me. Instead of version 2.8.3, use version 2.7.0.

def lifecycle_version = "2.7.0"

implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"

implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"

implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"

Upvotes: 5

Related Questions