Referencia no resuelta: viewModelScope – Kotlin Android

2 minutos de lectura

Avatar de usuario de LopsemPyier
Lopsem Pyier

Intento agregar viewModelScope a un viewModel básico, pero Android Studio no lo reconoce.

Traté de cambiar mi archivo de compilación de gradle con alguna solución que encontré, pero nada funciona.

Aquí un extracto de mi aplicación build.gradle

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"

Cuando escribo viewModelScope en mi viewModel dice Unresolved reference: viewModelScope.

  • lo tengo funcionando usando androidx.lifecycle:lifecycle-viewmodel-ktx:2.1.0-beta01.

    – CommonsWare

    25 de mayo de 2019 a las 14:38

avatar de usuario de j2emanue
j2emanue

por ahora está en alfa, así que actualice su gradle para usar las siguientes dependencias:

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

En mi caso, olvidé extender ViewModel en esa clase, la clase que usa para viewModelScope debe ser como yourModelClass : ViewModel() en kotlin y para java yourModelClass extends ViewModel

espero su ayuda

He tenido el mismo problema y acabo de importar:

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

Aunque pensé que fragment-ktx no estaba realmente relacionado. Me tomó un tiempo darme cuenta de eso. ¡Espero eso ayude!

  • ¿Alguien puede explicar por qué “androidx.navigation:navigation-fragment-ktx” está relacionado con viewModelScope?

    – Erfan Eghterafi

    9 dic 2020 a las 15:55

Compruebe también que está en el archivo correcto. Tuve el mismo problema por un momento y llegué a esta página, pero luego me di cuenta de que accidentalmente traté de ejecutar viewModelScope.launch en mi Fragmento.

viewModelScope.launch solo está disponible en sus ViewModels y
lifecycleScope.launch en sus componentes conscientes del ciclo de vida.

Para ver la última versión del artefacto, consulte
Repositorio Maven Ciclo de vida de Android ViewModel Kotlin Extensiones

En el archivo build.gradle del nivel de la aplicación, agregue lo siguiente: –

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"

No olvides agregar apply plugin: 'kotlin-kapt' en la parte superior del archivo app/build.gradle

avatar de usuario de gotwo
tengo dos

viewModelScope fue presentado con el lanzamiento 2.1.0ver aquí.

comprobar si lifecycle-viewmodel-ktx-2.2.0-alpha01.aar esta instalado. Para mí no hay ningún mensaje de error con la configuración que escribiste. Sin embargo, hay un mensaje de error cuando se usa una versión anterior:

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

Pero esto funciona:

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

Avatar de usuario de Sanket Bhangale
Sanket Bhangale

Tal vez no esté extendiendo el modelo de vista de actividad con Ver modelo clase

class SampleActivityViewModel: ViewModel() {

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

¿Ha sido útil esta solución?