Hola, estoy tratando de que mi ViewModel funcione, pero no he tenido suerte hasta ahora. Android Studio muestra un error Cannot resolve symbol 'ViewModelProviders'
.
Cada otra pregunta que me encontré en este tema estaba corrigiendo extends Activity
a extends AppCompatActivity
, pero yo estoy extendiendo la correcta. No estoy seguro de lo que me falta ...
Mi código se basa en este video de YouTube
MainActivity.java
public class MainActivity extends AppCompatActivity implements
TileAdapter.TileAdapterOnClickHandler {
private BaseViewModel viewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//set Toolbar
Toolbar myToolbar = findViewById(R.id.toolbar);
setSupportActionBar(myToolbar);
//initialize viewModel
viewModel = ViewModelProviders.of(this).get(BaseViewModel.class);
BaseViewModel.java
public class BaseViewModel extends ViewModel {
private Movie[] mMovie;
public void init (Movie[] movies){
this.mMovie = movies;
}
public Movie[] getMovie() {
return mMovie;
}
import
declaración, o la tiene pero no tiene la dependencia en su configuración de Gradle.ViewModel
en el paquete diferente y lo está importando desde allíRespuestas:
No tenía ambas dependencias en mi compilación, de ahí el problema.
Gracias @Muthukrishnan Rajendran
fuente
Si está utilizando
androidx
, necesita esto:fuente
Si está utilizando sdk compilado versión 28 o superior, solo necesita agregar una dependencia única para obtener
ViewModel
yLiveData
fuente
android.arch.lifecycle:extensions
puede buscarextensions
en maven.google.com/web/index.html y ver la última versiónCree una instancia de viewmodel como este:
fuente
debe agregar la biblioteca en build.gradle de su proyecto
def lifecycle_version = "2.0.0"
fuente
Resuelvo este problema desde la documentación oficial de Android . Agregar a continuación a
build.grale
fuente
En mi caso (Android Studio 3.6.3),
AppCompatActivity
para hacer con éxito:se necesitan ambos:
(solo con
lifecycle-extentions
no fue suficiente)fuente
En el archivo build.gradle, agregue estas líneas en el bloque de dependencias
fuente
Usar
androix
bibliotecasCambio
implementation 'com.android.support:appcompat-v7:28.0.0'
a
implementation 'androidx.appcompat:appcompat:1.1.0-alpha03'
Puedes usar
fuente
En la implementación "androidx.lifecycle: lifecycle-extensions: 2.2.0" y versiones posteriores, ViewModelProviders está obsoleto, use
o en Kotlin
en vez de
fuente
- ' ViewModelProviders ' está obsoleto ahora
viewModel = ViewModelProvider(this).get(BaseViewModel.class);
var viewModel = ViewModelProvider(this).get(BaseViewModel::class.java)
Refs: https://developer.android.com/reference/androidx/lifecycle/ViewModelProviders
fuente
Funciona bien en mi aplicación (java) antes
cambios a
espero que pueda ayudar
fuente
En mi caso, me enfrento al siguiente problema, es decir:
Agregué las siguientes dependencias en mi proyecto build.gradle .
Luego creo mi clase en un proyecto de módulo y me enfrento a este problema, luego agrego estas bibliotecas en el archivo build.gradle del módulo y el problema se resuelve.
fuente
Yo tuve el mismo problema. Ninguna de las otras soluciones me ayudó.
Me di cuenta de que estaba usando en
import androidx.lifecycle.ViewModelProvider;
lugar deimport androidx.lifecycle.ViewModelProviders;
.Así que asegúrese de usar
import androidx.lifecycle.ViewModelProviders;
. Eso esViewModelProviders
con uns
.fuente