githubbrowsersample - android architecture components example
No se puede resolver el sÃmbolo ViewModelProviders en AppCompatActivity (7)
En el archivo build.gradle, agregue estas líneas en el bloque de dependencias
dependencies {
...
def lifecycle_version = "1.1.1"
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
//if not using java 8,use the following line
annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version"
//if using java 8,ignore above line and add the following line
implementation "android.arch.lifecycle:common-java8:$lifecycle_version"
...
}
Hola, estoy tratando de hacer que mi ViewModel funcione, pero hasta ahora no he tenido suerte.
Android Studio muestra un error
Cannot resolve symbol ''ViewModelProviders''
.
Todas las demás preguntas que encontré sobre este tema estaban corrigiendo
extends Activity
para
extends AppCompatActivity
, pero estoy extendiendo la correcta.
No estoy seguro de lo que me estoy perdiendo ...
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;
}
No tenía ambas dependencias en mi compilación, de ahí el problema.
implementation "android.arch.lifecycle:extensions:1.1.0"
implementation "android.arch.lifecycle:viewmodel:1.1.0"
Gracias @Muthukrishnan Rajendran
Resuelvo este problema de la
documentación oficial de Android
.
Agregue a continuación a
build.grale
def lifecycle_version = "2.0.0"
// ViewModel and LiveData
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
Si está usando
androidx
, necesita esto:
implementation ''androidx.lifecycle:lifecycle-extensions:2.0.0-rc01''
Si está utilizando SDK compilado versión 28 o superior, solo necesita agregar una dependencia única para obtener
ViewModel
y
LiveData
dependencies {
//...
def lifecycle_version = "1.1.1"
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
}
Utilice
androix
bibliotecas de
androix
Cambio
implementation ''com.android.support:appcompat-v7:28.0.0''
a
implementation ''androidx.appcompat:appcompat:1.1.0-alpha03''
Puedes usar
Refactor>Migrate to AndroidX
debe agregar la biblioteca en build.gradle de su proyecto
def lifecycle_version = "2.0.0"
// ViewModel and LiveData
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"