Nicht aufgelöste Referenz: viewModelScope – Kotlin Android

Lesezeit: 2 Minuten

Benutzeravatar von LopsemPyier
LopsemPyier

Ich versuche, viewModelScope zu einem einfachen viewModel hinzuzufügen, aber Android Studio erkennt es nicht.

Ich habe versucht, meine Gradle-Build-Datei mit einer Lösung zu ändern, die ich gefunden habe, aber nichts funktioniert.

Hier ein Auszug meiner build.gradle App

implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0-alpha01"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0-alpha01"
implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01"
kapt "androidx.lifecycle:lifecycle-compiler:2.2.0-alpha01"

Wenn ich viewModelScope in mein viewModel eingebe, heißt es Unresolved reference: viewModelScope.

  • Ich habe es funktioniert mit androidx.lifecycle:lifecycle-viewmodel-ktx:2.1.0-beta01.

    – CommonsWare

    25. Mai 2019 um 14:38 Uhr

Benutzeravatar von j2emanue
j2emanue

Im Moment ist es in Alpha, also aktualisieren Sie bitte Ihren Gradle, um die folgenden Abhängigkeiten zu verwenden:

implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"

In meinem Fall habe ich vergessen, ViewModel in dieser Klasse zu erweitern, die Klasse, die Sie für viewModelScope verwenden, muss ähnlich sein yourModelClass : ViewModel() in Kotlin und für Java yourModelClass extends ViewModel

Hoffe es hilft

Ich hatte das gleiche Problem und habe gerade importiert:

"androidx.navigation:navigation-fragment-ktx:2.2.0-rc03"
"androidx.lifecycle:lifecycle-livedata-ktx:2.2.0-rc03"

Obwohl ich dachte, dass fragment-ktx nicht wirklich verwandt ist. Ich habe eine Weile gebraucht, um das herauszufinden. Ich hoffe es hilft!

  • Kann jemand erklären, warum “androidx.navigation:navigation-fragment-ktx” mit viewModelScope verwandt ist??

    – Erfan Eghterafi

    9. Dezember 2020 um 15:55 Uhr

Überprüfen Sie auch, ob Sie sich in der richtigen Datei befinden. Ich hatte das gleiche Problem für einen Moment und kam auf diese Seite, aber später bemerkte ich, dass ich versehentlich versucht hatte zu rennen viewModelScope.launch auf meinem Fragment.

viewModelScope.launch ist nur in Ihren ViewModels und verfügbar
lifecycleScope.launch in Ihren lebenszyklusbewussten Komponenten.

Die neueste Version des Artefakts finden Sie unter
Maven Repository Android Lifecycle ViewModel Kotlin-Erweiterungen

Fügen Sie in der build.gradle-Datei auf App-Ebene Folgendes hinzu:

def lifecycle_version = "2.2.0-rc03"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"

Vergessen Sie nicht hinzuzufügen apply plugin: 'kotlin-kapt' oben in der Datei app/build.gradle

gotwos Benutzeravatar
habzwei

viewModelScope wurde mit Release eingeführt 2.1.0sehen hier.

Prüfe ob lifecycle-viewmodel-ktx-2.2.0-alpha01.aar ist installiert. Bei mir gibt es keine Fehlermeldung bei den von dir geschriebenen Einstellungen. Allerdings kommt es bei Verwendung einer früheren Version zu einer Fehlermeldung:

implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.0.0"

Aber das funktioniert:

implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.1.0"

Benutzeravatar von Sanket Bhangale
Sanket Bhangale

Möglicherweise erweitern Sie das activityViewModel nicht mit ViewModel Klasse

class SampleActivityViewModel: ViewModel() {

 fun getData(){
     viewModelScope.launch{
       // Make an API call
     }
   }
}

1436150cookie-checkNicht aufgelöste Referenz: viewModelScope – Kotlin Android

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy