Symbol AppCompatActivity kann nicht aufgelöst werden - Support v7-Bibliotheken werden nicht erkannt?

69

Ich versuche herauszufinden, warum mein Android-Studio die AppCompat v7-Bibliothek nicht richtig erkennt. Die folgende Importanweisung wird grau angezeigt und besagt, dass es kein Paket für support.v7.app gibt. Unten ist meine Aktivitätsdatei:

import android.support.v7.app.AppCompatActivity;


public class XApplicationActivity extends AppCompatActivity

Meine build.grade:

compile "com.android.support:appcompat-v7:22.0.0"
compile "com.android.support:support-annotations:$ANDROID_SUPPORT_VERSION"
compile "com.android.support:support-v4:$ANDROID_SUPPORT_VERSION"

Meine Projekteinstellungen:

minSdkVersion = 14
targetSdkVersion = 21
compileSdkVersion = 21
buildToolsVersion = "22.0.1"

Ich bin wirklich verwirrt darüber, warum mir das immer noch Probleme bereitet. Dinge, die ich bereits versucht habe:

  • Projekt reinigen / umbauen
  • Caches ungültig machen und neu starten
  • Überprüfen Sie eine Milliarde Mal, ob ich die Support-Bibliothek installiert habe (ich habe unbedingt das neueste Support-Repository und die neuesten Bibliotheken installiert).

Kennt jemand irgendwelche Korrekturen? Es hat mich viel Zeit gekostet und ist wirklich frustrierend.

Hendersawn
quelle

Antworten:

111

Auch nach dem Upgrade auf appcompat-v7:22.1.0, in dem AppCompatActivtydas Problem für mich nicht behoben wurde, gab Android Studio das gleiche Problem

Das Symbol 'AppCompatActivity' kann nicht aufgelöst werden.

Manchmal hilft das Löschen der Android Studio Caches.

In Android Studio habe ich gerade die Caches geleert und mit der folgenden Option neu gestartet:

Datei-> Caches ungültig machen / neu starten

Nicks
quelle
52

Wenn Sie AndroidX anstelle von Android verwenden, müssen Sie Änderungen vornehmen

import android.support.v7.app.AppCompatActivity;

zu

import androidx.appcompat.app.AppCompatActivity;

und ändern

<android.support.constraint.ConstraintLayout>

zu

<androidx.constraintlayout.widget.ConstraintLayout>
Mina Chen
quelle
Vielen Dank! Ich kämpfte ein wenig leise und das funktionierte für mich, nachdem ich alle anderen Lösungen durchgeführt hatte
Cornelis Kuijpers
Dies führte mich in die richtige Richtung. Nach der Migration auf AndroidX müssen Sie alle diese Importzeilen reparieren! Migration macht nichts davon, uhhrrr
Boris Gafurov
33

1. Löschen Sie den Ordner
.idea. 2. Schließen Sie das Projekt und öffnen Sie es erneut.
3.Datei -> Projekt mit Gradle-Dateien synchronisieren

Das hat bei mir funktioniert

Muhamed Krasniqi
quelle
22

Wir müssen keine Dateien löschen, sondern nur die Caches ungültig machen, um die Konfiguration neu zu starten:

Einführung in die Beschreibung des Imagens aquí

Jorgesys
quelle
22

AppCompatActivity wurde nur in Version 22.1.0 der Support-Bibliothek hinzugefügt. Davor hieß es ActionBarActivity.

Sie sollten für alle Support-Bibliotheken dieselbe Version verwenden. Zum Zeitpunkt des Schreibens ist die neueste Version 23.1.1 (die neueste Version finden Sie hier https://developer.android.com/tools/support-library/index.html#revisions ), also der Abschnitt mit den Abhängigkeiten Ihrer Gradle-Datei sollte so aussehen.

implementation "com.android.support:support-v4:23.1.1"
implementation "com.android.support:appcompat-v7:23.1.1"
implementation "com.android.support:support-annotations:23.1.1"
Richard Strand
quelle
18

Okay, ich habe es behoben, indem ich es neu aufgebaut habe, um zum vierten Mal ein ./gradlew clean Assemble zu erstellen ... Android Studio ist eine seltsame Sache

Hendersawn
quelle
2
Versuchte dies und es brach alles, meldete eine Menge Fehler :( Doch danach und 'Make' das Projekt erneut, ist das Problem endlich weg!
3c71
11

Die Lösung, der ich folgte, ist in den folgenden Schritten zusammengefasst:

  1. Von Build - Menü wählen Sie Bearbeiten Bibliotheken und Abhängigkeiten

Geben Sie hier die Bildbeschreibung ein

  1. Stellen Sie sicher, dass Sie das neueste AppCompat- Paket hinzufügen , wenn es nicht hinzugefügt wird

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

  1. Bereinigen Sie Ihr Projekt nach dem Hinzufügen und erstellen Sie es neu.

Geben Sie hier die Bildbeschreibung ein

wbadry
quelle
1
Ich kann diese Build-Optionen nicht sehen, ich sehe nur die unteren 3 Optionen plus 'Make' oben. Ich habe die neueste Version von AS deinstalliert und neu installiert und als Android-Projekt importiert, aber diese Optionen (und viele andere, die ich in anderen Antworten gesehen habe) stehen mir nicht zur Verfügung. Ich habe mir überlegt, wie man ein reaktionsfähiges natives Projekt richtig importiert, und es sollte so einfach sein, wie es scheint, aber das funktioniert bei mir nicht. Mussten Sie etwas tun, von dem jeder weiß, dass Sie es vielleicht nicht erwähnen? Oder wissen Sie, was mein Problem sein könnte?
user3653863
Hier sehe ich nicht das gleiche Build-Menü, das Sie in Ihrem Screenshot erwähnt haben ... Dies scheint die gute Lösung zu sein, aber ich kann es nicht herausfinden.
FMaz008
10

Wenn Sie es bereits versucht haben

  1. Caches ungültig machen und neu starten
  2. Projekt reinigen / umbauen
  3. ./gradlew sauber montieren
  4. Implementierung hinzugefügt
    "com.android.support:support-v4:23.1.1"
    "com.android.support:appcompat-v7:23.1.1"
    "com.android.support:support-annotations:23.1.1"
  5. Import in android.support.v7.app.AppCompatActivity korrigiert;
  6. Bestehende Androidx-Importe wurden korrigiert

Immer noch vor dem Problem, dann lesen Sie bitte unten

Endlich die Lösung gefunden

Ich habe alles versucht, was in allen Antworten erwähnt wurde, und bin gescheitert.

Gehen Sie zu gradle.properties und machen Sie diese Flags falsch

android.useAndroidX = false

// Bibliotheken von Drittanbietern automatisch für AndroidX konvertieren

android.enableJetifier = false

Die oben genannten Flaggen waren

"stimmt, für mich und daher wird gradle keine v7-komponenten herunterladen"

Jeril Kuruvila
quelle
2
Wow, einfach genial. Wie haben Sie das herausgefunden?
Pacerier
Das Deaktivieren des Jetifiers und von AndroidX löste es für mich, nachdem alles andere fehlgeschlagen war.
Wambada
7

Ich habe von "... erweitert ActionBarActivity" zu "... erweitert AppCompatActivity" geändert und versucht, Caches zu bereinigen, neu zu starten, ungültig zu machen / neu zu starten und kam nicht weiter. Alle meine Versionen waren auf dem neuesten Stand.

Was es schließlich löste, war sicherzustellen, dass mein Import korrekt war:

import android.support.v7.app.AppCompatActivity;

Aus irgendeinem Grund wurde es nicht automatisch eingerichtet, wie ich es gewohnt war, und ich musste es manuell hinzufügen.

Hoffe das hilft jemandem!

Gravitoid
quelle
5

Ich hatte das gleiche Problem in meinem neu gestarteten Projekt mit mindestens API 23, und schließlich habe ich diese Codezeilen in meine Gradle-Abhängigkeitsdatei eingefügt und es hat den Fehler behoben :)

 implementation 'com.android.support:appcompat-v7:28.0.0'
 implementation 'com.android.support:customtabs:28.0.0'
 implementation 'com.android.support:support-vector-drawable:28.0.0'
 implementation 'com.android.support:support-media-compat:28.0.0'
Imran
quelle
4

Ich habe genau den gleichen Fehler mit Für den Fall, dass es anderen hilft .. zu dokumentieren, was für mich nützlich war für die neuesten (14. Januar 2017) neuesten alles. Versuchte alle Invalidate, Build Clean, löschte sogar .gradle /, optimierte die Support-Bibliotheken etc .. auf mehrere Stack-Überlauf-Antworten.

Ich fand, dass das Upgrade der settings.gradle-Gradle-Version das Problem behoben hat (es war 2.1.3). Etwas in der Gradle-Toolchain scheint den Klassenpfad 'com.android.tools.build:gradle:2.2.3' zu haben.

Pradeep Kumar
quelle
4

Ersetze das

import android.support.v7.app.AppCompatActivity;

mit import androidx.appcompat.app.AppCompatActivity

user1078632
quelle
4

Ich habe die gleiche Situation durchgemacht und die Lösung war ziemlich einfach. Versuchen Sie einfach, die folgende Importanweisung zu entfernen.

import android.support.v7.app.AppCompatActivity;

Sie werden mit dem folgenden Code aufgefordert, Alt + Eingabetaste zu drücken.

import androidx.appcompat.app.AppCompatActivity;

Drücken Sie einfach Alt + Eingabetaste und entfernen Sie die vorherige Importanweisung vollständig.

Grundsätzlich tritt dieses Problem in der neuen Version von Android Studio auf.

Dheeraj Pramod Naik
quelle
3

Die beste Lösung ist auf jeden Fall, auf Datei> Caches ungültig machen und neu starten zu gehen

Dann im Dialogmenü ... Klicken Sie auf Caches ungültig machen und neu starten. Warten Sie eine Minute oder wie lange es dauert, um Ihr Projekt zurückzusetzen, dann sollten Sie gut sein.

- -

Ich sollte beachten, dass ich auch auf das Problem gestoßen bin, auf eine Ressourcendatei oder "R" -Datei zu verweisen, die sich in einer compileOnly-Bibliothek befand, die ich in meinem Gradle hatte. (dh compileOnly library> res> referenzierte XML-Datei) Ich habe aufgehört, diese Datei in meinem Java-Code zu referenzieren, und es hat mir geholfen. Seien Sie also müde, wo Sie auf Dateien verweisen.

Luftrebe
quelle
3

Ich hatte diese Einstellungen in 'gradle.properties'

android.useAndroidX=true # Automatically convert third-party libraries to use AndroidX android.enableJetifier=true

Es ist besser, AndroidX-Bibliothek zu verwenden. Also habe ich alle Importe in die AndroidX-Bibliothek geändert und das Projekt kompiliert. Besuch http://developer.android.com/jetpack/androidxfür Informationen.

Deepali Maniyar
quelle
2

androidX Benutzer

Ändern Sie Ihre minSdkVersion auf API-Level 21.

so minSdkVersion 21 oder baue deine App mit compileSdkVersion 28und wechsle auch targetSdkVersionzutargetSdkVersion 28

und Sie werden sehen, dass v7 Fehler verschwunden ist. Danach, wenn Sie Probleme beim Erstellen der Symbolleiste oder eines anderen Widgets haben. Drücken Sie Alt + Eingabetaste und erstellen Sie eine Methode dafür.

HeshanHH
quelle
Nicht AndroidX-Benutzer, aber endlich mein Problem gelöst.
Marco
2

Das Problem könnte eine Importreferenz sein.
Versuchen Sie , sie zu ändern. Von:

import android.support.v7.app.AppCompatActivity;


Zu:

import androidx.appcompat.app.AppCompatActivity;
Ismael Nadaf
quelle
1

Löschen Sie den Ordner .idea in Ihrem Projekt, bei dem es sich um einen versteckten Ordner handelt. Gehen Sie zu Ihrem Projekt im System und klicken Sie auf Strg + H. Es wird angezeigt. Löschen Sie es dann. Starten Sie jetzt Ihr Android Studio neu. Ich werde lösen. Es funktioniert für mich.

Gyan Swaroop Awasthi
quelle
1

Hintergrundinformation:

Meine IDE

Android Studio 3.1.3
Build #AI-173.4819257, built on June 4, 2018
JRE: 1.8.0_152-release-1024-b02 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 7 6.1

Erste Lösung: Importieren Sie das Projekt erneut und stimmen Sie nicht zu, das Android Gradle-Plug-In zu aktualisieren.

Zweite Lösung: Ihre Dateien sollten diese Fragmente enthalten .

build.gradle:

buildscript {
  repositories {
    jcenter()
    google()//this is important for gradle 4.1 and above
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:3.1.3' //this android plugin for gradle requires gradle version 4.4 and above
  }
}
allprojects {
  //...
  repositories {
    jcenter()
    google()//This was not added by update IDE-wizard-button.
    //I need this when using the latest com.android.support:appcompat-v7:25.4.0 in app/build.gradle
  }
}

Befolgen Sie entweder die Empfehlung Ihrer IDE, um Ihre Gradle-Version auf 4.4 zu aktualisieren, oder ziehen Sie in Betracht, dies in gradle / wrapper / gradle-wrapper.properties zu haben

distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

Optionale Änderung buildToolsVersion in app / build.gradle:

android {
compileSdkVersion 25
buildToolsVersion '27.0.3'

app / build.gradle: Kommentieren Sie die Abhängigkeiten aus und lassen Sie den Build fehlschlagen (automatisch oder auslösen)

dependencies {
//compile fileTree(dir: 'libs', include: ['*.jar'])
//compile 'com.android.support:appcompat-v7:25.1.0'
}

app / build.gradle: Kommentar in den Abhängigkeiten erneut. Es wurde empfohlen, sie von der Kompilierung zur Implementierung zu ändern, aber im Moment ist es nur ein Warnproblem.

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:25.1.0'
}

Nach der Neuerstellung des Projekts sollte die Importanweisung nicht mehr ausgegraut sein. Versuchen Sie, Strg + h für die Klasse aufzurufen. Aber aus irgendeinem Grund sind die Fehlermarkierungen in diesen Klassenreferenzierungsanweisungen immer noch vorhanden. Um sie zu entfernen, müssen wir die Projektbaumansicht ausblenden und wiederherstellen oder alternativ das Projekt schließen und erneut öffnen.

Endlich ist es soweit.

Weitere Lesungen:

Gradle aktualisieren

Verwenden Sie die neuen Abhängigkeitskonfigurationen

Wenn Sie einen Bildpfad für meine Lösung bevorzugen, können Sie meinen Blog besuchen

Catweazle
quelle
1

Datei-> Caches ungültig machen / Neustart funktioniert bei mir.

Anoja Madusanka
quelle
1

Wenn die angegebenen Lösungen nicht funktionieren, erstellen Sie ein neues Projekt mit 'KOTLIN' als Sprache, auch wenn Sie mit Java arbeiten. Ersetzen Sie dann den Hauptordner des neuen Projekts durch den Hauptordner des alten Projekts.

Ave Maria
quelle
0

Für mich hat der folgende Code gut funktioniert:

import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;

Mit der (XML-Datei):

androidx.constraintlayout.widget.ConstraintLayout xmlns:android="...."
rudr
quelle
0

Ich habe es gerade kommentiert und Androidx verwendet und jetzt funktioniert alles gut!

import androidx.appcompat.app.AppCompatActivity;
// import android.support.v7.app.AppCompatActivity;
cmcodes
quelle
0

Nach dem Ungültigmachen des Cache wechseln Sie von

import android.support.v7.app.AppCompatActivity;

zu

import androidx.appcompat.app.AppCompatActivity;

arbeitete für mich.

Bhaskar Mandavilli
quelle
0

Import einschließen androidx.appcompat.app.AppCompatActivity; in Ihrer MainActivity.java mit anderen Importanweisungen. Das würde so aussehen: Geben Sie hier die Bildbeschreibung ein

Dies löste mein Problem

Pulkit Ahuja
quelle