web-dev-qa-db-fra.com

Impossible de résoudre le symbole ViewModelProviders sur AppCompatActivity

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;
}
58
Sheler

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

123
Sheler

Si vous utilisez androidx vous avez besoin de ceci:

implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0-rc01'
23
Babao

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"
}
8
L-X

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"
2
shellhub

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"
...
}

 Sample Image of build.gradle file

2
Sulav Timsina

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
1
Sebastian Duran

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"
0
Fatih Çakıroğlu