Kann Symbol ViewModelProviders auf AppCompatActivity nicht auflösen

Lesezeit: 4 Minuten

Hey, ich versuche, mein ViewModel zum Laufen zu bringen, aber bisher kein Glück. Android Studio zeigt Fehler an Cannot resolve symbol 'ViewModelProviders'.

Jede andere Frage, die ich zu diesem Thema gefunden habe, war eine Korrektur extends Activity zu extends AppCompatActivity, aber ich erweitere das rechte. Ich bin mir nicht sicher, was ich vermisse …
Mein Code basiert auf Dieses YouTube-Video

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

  • “Symbol kann nicht aufgelöst werden” bedeutet, dass Sie entweder das nicht haben import -Anweisung, oder Sie haben die Abhängigkeit in Ihrem Gradle-Setup nicht.

    – CommonsWare

    21. März 2018 um 11:52 Uhr

  • Überprüfen Sie, ob Sie abhängig sind android.arch.lifecycle:Erweiterungen in build.gradle

    – Muthukrishnan Rajendran

    21. März 2018 um 11:52 Uhr


  • Entweder verwendet er eine Bibliothek und hat die Abhängigkeit in der Gradle-Datei hinzugefügt, damit er ViewModel importieren kann, oder er hat eine benutzerdefinierte Klasse ViewModel unter dem anderen Paket und er importiert es von dort

    – Akshay Katariya

    21. März 2018 um 11:54 Uhr

  • Hatte keine Erweiterungen als Abhängigkeit. Danke @MuthukrishnanRajendran

    – Sheler

    21. März 2018 um 13:08 Uhr

Ich hatte nicht beide Abhängigkeiten in meinem Build, daher das Problem.

implementation "android.arch.lifecycle:extensions:1.1.0"
implementation "android.arch.lifecycle:viewmodel:1.1.0"

Danke @Muthukrishnan Rajendran

  • @Sheler Ihre Antwort ist richtig, aber die Dokumentation ist falsch. In der Dokumentation wird angegeben, dass ViewModel und LiveDat beide in der Implementierung “android.arch.lifecycle:extensions:1.1.1” sind.

    – Pritisch

    8. Mai 2018 um 11:16 Uhr


  • Hmm diese Lösung hat mein Problem immer noch nicht gelöst. Ich habe die Implementierung ‘android.arch.lifecycle:extensions:1.1.1’ in meiner App gradle und allprojects {repositories { google() jcenter() } } Gibt es noch etwas, das hinzugefügt werden muss?

    – Mustermüll

    26. Juni 2018 um 15:03 Uhr


  • Ich sehe die Klasse ViewModelProvider, aber sie hat nicht die Methode .of(). ViewModelProviders ist noch nicht definiert. Ich bin auf einem Mac, falls das wichtig ist.

    – Mustermüll

    26. Juni 2018 um 15:06 Uhr


  • Gibt es eine min. SDK- oder Java 8-Definition, die dem Projekt hinzugefügt werden muss?

    – Mustermüll

    26. Juni 2018 um 15:14 Uhr

  • Macht nichts. Stellen Sie sicher, dass Sie Ihre Gradles-Dateien synchronisieren, wenn sie nicht angezeigt werden.

    – Mustermüll

    26. Juni 2018 um 15:43 Uhr

Benutzer-Avatar
Baba

Wenn Sie verwenden androidx du brauchst das:

implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'

  • Für alle anderen, die dieses Problem haben, benötigen Sie auch dies in Ihrem App-Gradle: apply plugin: ‘androidx.navigation.safeargs’ und das in Ihrem Android-Gradle: classpath “android.arch.navigation:navigation-safe-args-gradle-plugin :1.0.0-alpha06” Wenn Sie Probleme haben, diese Dinge zu platzieren, schauen Sie in der Android-Sunflower-Demo-App von Google nach.

    – findusl

    24. Oktober 2018 um 17:34 Uhr


  • Unter diesem Link finden Sie die neueste Androidx-Version developer.android.com/jetpack/androidx/migrate

    – Benutzer2301281

    10. Februar 2019 um 7:12 Uhr


  • Was ist die Dummheit! ViewModelProvider ist ohne Abhängigkeit verfügbar, aber für ViewModelProvider benötigen wir eine zusätzliche Abhängigkeit.

    – Rahul Rastogi

    28. Oktober 2019 um 7:15 Uhr

Benutzer-Avatar
Sumit Shukla

android.arch.lifecycle:extensions ist veraltet

def lifecycle_version = "2.2.0"
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"

Schaffen Beispiel des Ansichtsmodells wie folgt:

Java

Yourclass obj = new ViewModelProvider(context).get(ClassViewModel.class);

Kotlin

var obj = ViewModelProvider(context).get(ClassViewModel::class.java)

Wenn Sie die kompilierte SDK-Version 28 oder höher verwenden, müssen Sie nur eine einzelne Abhängigkeit hinzufügen, um zu erhalten ViewModel und LiveData

dependencies {
    //...
    def lifecycle_version = "1.1.1"

    // ViewModel and LiveData
    implementation "android.arch.lifecycle:extensions:$lifecycle_version"
}

Benutzer-Avatar
hat

In meinem Fall (Android Studio 3.6.3 ~ 4.1.2) in AppCompatActivity erfolgreich machen:

MyViewModel myViewModel = new ViewModelProvider(this).get(MyViewModel.class);

es erfordert beides:

implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

(allein mit lifecycle-extentions ist nicht ausreichend)

Aktualisieren

Es scheint, dass Sie die Gradle-Implementierungszeile ('androidx.lifecycle:lifecycle-extensions:2.2.0') zu instanziieren ViewModelProvider.

  • androidx.lifecycle:lifecycle-extensions ist veraltet developer.android.com/jetpack/androidx/releases/lifecycle

    – Jack

    23. Juni 2021 um 14:12 Uhr

Benutzer-Avatar
Fatih Çakıroğlu

Sie sollten eine Bibliothek in build.gradle Ihres Projekts hinzufügen

def lifecycle_version = “2.0.0”

// ViewModel and LiveData
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"

  • androidx.lifecycle:lifecycle-extensions ist veraltet developer.android.com/jetpack/androidx/releases/lifecycle

    – Jack

    23. Juni 2021 um 14:12 Uhr

Benutzer-Avatar
duyuanchao

Ich löse dieses Problem ab Offizielle Android-Dokumentation. Fügen Sie unten hinzu build.grale

def lifecycle_version = "2.0.0"
// ViewModel and LiveData
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"

1337840cookie-checkKann Symbol ViewModelProviders auf AppCompatActivity nicht auflösen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy