Hey, j'essaie de faire fonctionner mon ViewModel, mais pas de chance jusqu'à présent. Android Studio affiche l’erreur Cannot resolve symbol 'ViewModelProviders'
.
Toutes les autres questions que j'ai trouvées sur ce sujet corrigeaient extends Activity
en extends AppCompatActivity
, mais j'étendais la bonne. Pas sûr de ce que je manque ...
Mon code est basé sur Cette vidéo 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;
}
Je n'avais pas les deux dépendances dans ma construction, d'où le problème.
implementation "Android.Arch.lifecycle:extensions:1.1.0"
implementation "Android.Arch.lifecycle:viewmodel:1.1.0"
Merci @Muthukrishnan Rajendran
Si vous utilisez androidx
vous avez besoin de ceci:
implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0-rc01'
Si vous utilisez sdk compilé version 28 ou supérieure, il vous suffit d'ajouter une seule dépendance pour obtenir ViewModel
et LiveData
dependencies {
//...
def lifecycle_version = "1.1.1"
// ViewModel and LiveData
implementation "Android.Arch.lifecycle:extensions:$lifecycle_version"
}
Je résous ce problème de documentation officielle Android . Ajouter ci-dessous à build.grale
def lifecycle_version = "2.0.0"
// ViewModel and LiveData
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
Dans le fichier build.gradle, ajoutez ces lignes dans le bloc des dépendances.
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"
...
}
Utiliser les bibliothèques androix
Changement
implementation 'com.Android.support:appcompat-v7:28.0.0'
à
implementation 'androidx.appcompat:appcompat:1.1.0-alpha03'
Vous pouvez utiliser
Refactor>Migrate to AndroidX
vous devriez ajouter la bibliothèque dans le build.gradle de votre projet
def lifecycle_version = "2.0.0"
// ViewModel and LiveData
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"