wake-up-neo.com

Fehler beim Aufblasen von Klassen und Android.support.v7.widget.CardView

Ich möchte CardView in meinem Projekt verwenden, aber wenn ich meine Anwendung ausführe, erhalte ich die folgende Fehlermeldung. Ich verwende Eclipse

Error: Error inflating class and Android.support.v7.widget.CardView

The graphical view of my xml file says 'The following classes could not be instantiated:
- Android.support.v7.widget.CardView (Open Class, Show Error Log)
See the Error Log (Window > Show View) for more details.'

Bitte helfen.

Dies ist das Layout für mein Fragment, in dem ich CardView verwendet habe.

<FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
tools:context="com.example.log.MyContactsFragment" >

<!-- TODO: Update blank fragment layout -->

<Android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/cvContactDetails"
    Android:layout_width="match_parent"
    Android:layout_height="200dp"
    Android:layout_gravity="center"
    Android:background="?android:attr/selectableItemBackground"
    Android:clickable="false"
    Android:elevation="20dp" >

    <TextView
        Android:id="@+id/tvContacts"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="Contact Info" />

    <Button
        Android:id="@+id/bDelete"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="Delete" />

    <Button
        Android:id="@+id/bExport"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="Export to phone contacts" />
</Android.support.v7.widget.CardView>

Dies ist das Layout für meine Tätigkeit.

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v4.widget.DrawerLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/drawerLayout"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent" >

    <FrameLayout
        Android:id="@+id/flMainContent"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent" >
    </FrameLayout>

    <ListView
        Android:id="@+id/lvLeftDrawer"
        Android:layout_width="200dp"
        Android:layout_height="match_parent"
        Android:layout_gravity="left"
        Android:alpha="255"
        Android:background="#0B2161"
        Android:divider="@null"
        Android:choiceMode="singleChoice" >
    </ListView>

    <ListView
        Android:id="@+id/lvRightDrawer"
        Android:layout_width="200dp"
        Android:layout_height="match_parent"
        Android:layout_gravity="right"
        Android:alpha="255"
        Android:background="#0B2161"
        Android:divider="@null"
        Android:choiceMode="singleChoice" >
    </ListView>

</Android.support.v4.widget.DrawerLayout>

Das ist mein Logcat

FATAL EXCEPTION: main
Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.log/com.example.log.HomeScreenActivity}: Android.view.InflateException: Binary XML file line #9: Error inflating class Android.support.v7.widget.CardView
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2059)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2084)
at Android.app.ActivityThread.access$600(ActivityThread.Java:130)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1195)
at Android.os.Handler.dispatchMessage(Handler.Java:99)
at Android.os.Looper.loop(Looper.Java:137)
at Android.app.ActivityThread.main(ActivityThread.Java:4745)
at Java.lang.reflect.Method.invokeNative(Native Method)
at Java.lang.reflect.Method.invoke(Method.Java:511)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:786)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: Android.view.InflateException: Binary XML file line #9: Error inflating class Android.support.v7.widget.CardView
at Android.view.LayoutInflater.createView(LayoutInflater.Java:613)
at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:687)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:746)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:489)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:396)
at com.example.log.MyContactsFragment.onCreateView(MyContactsFragment.Java:60)
at Android.support.v4.app.Fragment.performCreateView(Fragment.Java:1504)
at Android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.Java:942)
at Android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.Java:1121)
at Android.support.v4.app.BackStackRecord.run(BackStackRecord.Java:682)
at Android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.Java:1484)
at Android.support.v4.app.FragmentActivity.onStart(FragmentActivity.Java:571)
at Android.app.Instrumentation.callActivityOnStart(Instrumentation.Java:1163)
at Android.app.Activity.performStart(Activity.Java:5018)
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2032)
... 11 more
Caused by: Java.lang.reflect.InvocationTargetException
at Java.lang.reflect.Constructor.constructNative(Native Method)
at Java.lang.reflect.Constructor.newInstance(Constructor.Java:417)
at Android.view.LayoutInflater.createView(LayoutInflater.Java:587)
25 more
Caused by: Java.lang.NoClassDefFoundError: Android.support.v7.cardview.R$styleable
at Android.support.v7.widget.CardView.initialize(CardView.Java:203)
at Android.support.v7.widget.CardView.<init>(CardView.Java:101)
... 28 more

Jemand, der das gleiche Problem gefunden oder gelöst hat, bitte kommentieren.

25
Harsh Pokharna

Ich denke ich kann meine eigene Frage beantworten. 

Gehen Sie zu Datei -> Importieren -> Vorhandener Android-Code in den Arbeitsbereich -> Durchsuchen (Gehen Sie zu SDK/Extras/Android/Support/Version 7/Kartenansicht) -> Klicken Sie auf OK -> Klicken Sie auf Fertig stellen

Ihr Projekt-Explorer zeigt nun cardview als Projekt an.

Klicken Sie mit der rechten Maustaste auf cardview project -> Properties -> Android (Left Pane) -> Enable isLibrary (aktivieren Sie das Kontrollkästchen) -> Apply -> ok

Klicken Sie nun mit der rechten Maustaste auf Ihr Projekt -> Eigenschaften -> Android (Linker Bereich) -> Hinzufügen (unter Bibliothek) -> Kartenansicht -> Anwenden -> OK

Klicken Sie nun erneut mit der rechten Maustaste auf Ihr Projekt -> Erstellungspfad -> Erstellungspfad konfigurieren -> Fügen Sie unter Projekte die Kartenansicht hinzu 

Du bist fertig.

56
Harsh Pokharna

Ich denke, Ihr Problem liegt nicht in Ihrem XML-Layout, sondern in Ihren build.gradle-Einstellungen.

Wenn Sie die Unterstützungsbibliothek für Recyclerview oder CardView in niedrigeren API-Geräten verwenden möchten, müssen Sie nicht nur die v7-Bibliothek importieren, sondern auch die Unterstützung für Recycler View und Card View unabhängig voneinander importieren.

So was:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.Android.support:appcompat-v7:21.0.+'
    compile 'com.Android.support:cardview-v7:21.0.+'
    compile 'com.Android.support:recyclerview-v7:21.0.+'
    compile 'com.Android.support:support-v4:21.0.0'
} 

Dies ist in den Google-Dokumenten hier vermerkt: https://developer.Android.com/training/material/compatibility.html

Siehe Abschnitt "Abhängigkeiten".

Sie können auch Googles RecyclerView-Beispiel zum Ausgraben herunterladen.

Hoffe das wird helfen!

39
Arthur Wang

In meinem Fall muss ich die beiden Dinge Android.support.v7.widget.CardView als Bibliotheksprojekt hinzufügen und außerdem die jar-Datei in Java build path hinzufügen + überprüfen. 

  1. Gehen Sie zu Datei -> Importieren -> Vorhandener Android-Code in den Arbeitsbereich -> Durchsuchen (Gehen Sie zu SDK/Extras/Android/Support/Version 7/Kartenansicht) -> Klicken Sie auf OK -> Klicken Sie auf Fertig stellen

  2. Klicken Sie mit der rechten Maustaste auf cardview project -> Properties -> Android (Left Pane) -> Enable isLibrary (aktivieren Sie das Kontrollkästchen) -> Apply -> ok 

  3. Klicken Sie mit der rechten Maustaste auf Ihr Projekt -> Eigenschaften -> Android (Linker Bereich) -> Hinzufügen (unter Bibliothek) -> Kartenansicht -> Anwenden -> OK 

  4. Rechtsklick erneut auf dein Projekt -> Erstellungspfad -> Erstellungspfad konfigurieren -> unter Bibliotheken -> JAR hinzufügen -> Kartenansicht erweitern -> Bibliotheken erweitern -> Android.support.v7.widget.CardView.jar auswählen  

  5. unter order and export -> Android.support.v7.widget.CardView.jar-- überprüfen> auf ok klicken

12
Piyush Kukadiya

wenn Sie diese Schritte mit intellij verwenden, funktioniert dies tatsächlich

  • klicken Sie in Ihr Projekt,
  • rechtsklick -> Moduleinstellungen öffnen (F4)
  • kartenansicht von\sdk\extras\Android\support\v7\importieren
  • fügen Sie dem Cardview-Modul die .jar-Datei hinzu
  • klicken Sie auf Ihr Projekt und geben Sie cardview Modulabhängigkeit
  • klicken Sie nun auf (+) auf cardview -> Android -> oben sehen Sie ein Kontrollkästchen (Bibliotheksmodul), aktivieren Sie es.
  • klicken Sie auf OK und schließen Sie den Einstellungsdialog.
  • erstellen Sie Ihr Projekt neu und führen Sie es aus.
4
SureshCS50

Ich habe Stunden damit verschwendet, das letzte Stück des Puzzles war für mich das "cardview" -Projekt, das als Android-Projekt in Eclipse importiert wurde. Klicken Sie dann mit der rechten Maustaste auf> Eigenschaften> Android> und ändern Sie es von Android 2.1 auf Lollipop!

4
Steven Elliott

Ich habe einen Fehler durch das Hinzufügen von Abhängigkeiten erhalten

Die Widgets RecyclerView und CardView sind Bestandteil der v7-Unterstützungsbibliotheken. Um diese Widgets in Ihrem Projekt zu verwenden, fügen Sie dem Modul Ihrer App diese Abstufungsabhängigkeiten hinzu:

abhängigkeiten { ... kompilieren Sie "com.Android.support:cardview-v7:21.0.+ " kompilieren 'com.Android.support:recyclerview-v7:21.0.+'}

http://developer.Android.com/training/material/lists-cards.html

3
Tink

Diese Schritte arbeiten für mich :)

Gehen Sie zu Datei -> Importieren -> Vorhandener Android-Code in den Arbeitsbereich -> Durchsuchen (Gehen Sie zu SDK/Extras/Android/Support/Version 7/Kartenansicht) -> Klicken Sie auf OK -> Klicken Sie auf Fertig stellen

Ihr Projekt-Explorer zeigt nun cardview als Projekt an.

Klicken Sie mit der rechten Maustaste auf cardview project -> Properties -> Android (Left Pane) -> Enable isLibrary (aktivieren Sie das Kontrollkästchen) -> Apply -> ok

Klicken Sie nun mit der rechten Maustaste auf Ihr Projekt -> Eigenschaften -> Android (Linker Bereich) -> Hinzufügen (unter Bibliothek) -> Kartenansicht -> Anwenden -> OK

Klicken Sie nun erneut mit der rechten Maustaste auf Ihr Projekt -> Erstellungspfad -> Erstellungspfad konfigurieren -> Fügen Sie unter Projekte die Kartenansicht hinzu

ein weiterer Schritt, den Sie zum Entfernen eines Fehlers benötigen, ist die Reihenfolge von cardview lib.

klicken Sie mit der rechten Maustaste erneut auf Ihr Projekt -> Eigenschaften -> Android (linker Bereich) -> wählen Sie cardview lib im Bibliotheksfenster -> und gehen Sie nach oben

2
sverma

Um dieses Problem zu beheben, müssen Sie zuerst cardview aus dem Ordner hinzufügen 

  1. Schließen Sie das Hauptprojekt.
  2. Entfernen Sie den Android-Support-v7-appcompat.
  3. Starten Sie die Eclipse neu.
  4. Fügen Sie den Android-Support-v7-appcompat hinzu.
  5. Reinigen, um das Projekt zu erstellen.
  6. Öffnen Sie dann das Hauptprojekt und erstellen Sie alle Projekte.
  7. Der Fehler bleibt bestehen. Starten Sie Eclipse neu. Das ist es.

Das ist für mich in Ordnung.

1
Hemant Shori

@sunil

Wie schon gesagt:

  1. Gehen Sie zu Datei -> Importieren -> Vorhandener Android-Code in den Arbeitsbereich -> Durchsuchen (Gehen Sie zu SDK/Extras/Android/Support/Version 7/Kartenansicht) -> Klicken Sie auf OK -> Klicken Sie auf Fertig stellen

  2. Klicken Sie mit der rechten Maustaste auf cardview project -> Properties -> Android (Left Pane) -> Enable isLibrary (aktivieren Sie das Kontrollkästchen) -> Apply -> ok

  3. Klicken Sie mit der rechten Maustaste auf Ihr Projekt -> Eigenschaften -> Android (Linker Bereich) -> Hinzufügen (unter Bibliothek) -> Kartenansicht -> Anwenden -> OK

Wenn dies nicht funktioniert, fahren Sie mit dem Hinzufügen und Entfernen einzelner Jars desselben Pakets aus dem Ordner Android-support-v7-cardview/libs des nun importierten Codes des Bibliotheksprojekts fort. Entfernen Sie das Glas, reinigen Sie das Projekt und versuchen Sie es erneut. Entfernen Sie das Projekt, das vom Team vorgeschlagen wurde, und entfernen Sie alle externen Jar-Objekte, die mit cardview in Verbindung stehen (ich denke, dass diese Konflikte verursachen). Reinigen Sie das Projekt und hoffentlich funktioniert es für Sie.

Hinweis: Ich persönlich musste die Zielerstellungsstufe der cardview-Bibliothek von 4.0.3 auf 5.0 ändern und dann wieder auf 4.1.2 , das Projekt jedes Mal bereinigen es auch zu arbeiten.

1
Mullazman

Deaktivieren Sie androidx in der Datei gradle.properties mit true -> false

Android.useAndroidX=false

Android.enableJetifier=false

ändern Sie diese Zeilen in build.gradle in api v28 (Modul: app)

compileSdkVersion 28

targetSdkVersion 28

dann füge diese Zeile in build.gradle ein (Modul: app)

`implementation 'com.Android.support:appcompat-v7:28.0.0'`
`implementation 'com.Android.support:recyclerview-v7:28.0.0'`
`implementation 'com.Android.support:cardview-v7:28.0.0'`
`implementation 'com.Android.support:design:28.0.0'`

Dann sync das Projekt

0
HeshanHH

Ich habe mein Problem durch einen Neustart des Eclipse gelöst. Stellen Sie außerdem sicher, dass Sie die Gläser im Build-Pfad hinzugefügt und für den Import/Export markiert haben. 

0
Anmol Nimbalkar

Diese Lösung funktioniert bei mir.

1- Gehen Sie zu "sdk\extras\Android\m2repository\com\Android\support\recyclerview-v7 * 22.1.1 *" (letzte Version für 22.1.1.)

2- Öffnen Sie die Datei recyclerview-v7-22.1.1.aar mit Winrar.

3- Es gibt eine JAR-Datei mit dem Namen classes.jar. Kopieren Sie das in Ihren Projektordner.

4- Klicken Sie mit der rechten Maustaste auf classes.jar und fügen Sie den Build-Pfad hinzu.

Das ist es.

0
Mete

Ein verwandter Hinweis: Wenn Sie die Unterstützungsbibliotheken verwenden, sind Sie ziemlich sicher, dass Ihre Abhängigkeiten korrekt sind, und Sie sind hier über eine Suche nach "Fehler beim Aufblasen der Klasse CardView" gekommen. Stellen Sie dann sicher, dass Ihr XML-Layout <Android verwendet .support.v7.widget.CardView> und nicht nur <CardView>!

Die beiden Fehler sind sich ziemlich ähnlich und ich brauchte ein paar Minuten, um zu facepalm zu gelangen, als ich bemerkte, dass ich nicht auf den vollständigen Klassennamen in der Fehlernachricht achtete und ich die Nicht-Unterstützung <CardView> in meinem Layout verwendete, ohne es zu merken es.

0
Nate Simpson

importieren Sie die CardView-Bibliothek als Eclipse-Projekt anstelle des Android-Projekts