it-swarm.com.de

android.view.InflateException: Binäre XML-Dateizeile # 12: Fehler beim Aufblasen der Klasse <unbekannt>

Ich erhalte viele Artfehler in der Betreffzeile. Diese Fehler scheinen gelegentlich zu sein und ich kann sie nicht reproduzieren. Vom Stack kann ich erfahren, dass ein solcher Fehler für meine verschiedenen Layoutressourcen auftreten kann. Die XML-Linie ist ebenfalls unterschiedlich.

Kann jemand erklären, warum dieser Fehler auftritt? Und was kann ich tun, um dieses Problem zu beheben?

Stapel 

=============================================================

com.fsp.Android.f generated the following exception:
Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fsp.Android.f/com.life360.Android.ui.tour.TourActivity}: Android.view.InflateException: Binary XML file line #12: Error inflating class <unknown>

--------- Stack trace ---------
1. Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2649)
2. Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2674)
3. Android.app.ActivityThread.access$2200(ActivityThread.Java:131)
4. Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1975)
5. Android.os.Handler.dispatchMessage(Handler.Java:99)
6. Android.os.Looper.loop(Looper.Java:123)
7. Android.app.ActivityThread.main(ActivityThread.Java:4702)
8. Java.lang.reflect.Method.invokeNative(Native Method)
9. Java.lang.reflect.Method.invoke(Method.Java:521)
10. com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:860)
11. com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:618)
12. dalvik.system.NativeStart.main(Native Method)
-------------------------------

----------- Cause -----------
Android.view.InflateException: Binary XML file line #12: Error inflating class <unknown>

1. Android.view.LayoutInflater.createView(LayoutInflater.Java:513)
2. com.Android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.Java:56)
3. Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:563)
4. Android.view.LayoutInflater.rInflate(LayoutInflater.Java:618)
5. Android.view.LayoutInflater.rInflate(LayoutInflater.Java:621)
6. Android.view.LayoutInflater.inflate(LayoutInflater.Java:382)
7. Android.view.LayoutInflater.inflate(LayoutInflater.Java:320)
8. Android.view.LayoutInflater.inflate(LayoutInflater.Java:276)
9. com.Android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.Java:208)
10. Android.app.Activity.setContentView(Activity.Java:1629)
11. com.solvek.sample.ui.BaseActivity.onCreate(BaseActivity.Java:23)
12. com.solvek.sample.ui.tour.TourActivity.onCreate(TourActivity.Java:161)
13. Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1047)
14. Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2587)
15. Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2674)
16. Android.app.ActivityThread.access$2200(ActivityThread.Java:131)
17. Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1975)
18. Android.os.Handler.dispatchMessage(Handler.Java:99)
19. Android.os.Looper.loop(Looper.Java:123)
20. Android.app.ActivityThread.main(ActivityThread.Java:4702)
21. Java.lang.reflect.Method.invokeNative(Native Method)
22. Java.lang.reflect.Method.invoke(Method.Java:521)
23. com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:860)
24. com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:618)
25. dalvik.system.NativeStart.main(Native Method)
-----------------------------

-------- Environment --------
Time =2010-12-20 08:27:35 AM
Device =tmobile/htc_espresso/espresso/espresso:2.1-update1/ERE27/216830:user/release-keys
Make =HTC
Model =T-Mobile myTouch 3G Slide
Product =htc_espresso
App =com.fsp.Android.f, version 2.0.9 (build 1232)

Hier ist ein Ergebnis von XML, jedoch tritt ein solcher Fehler in anderen XML-Dateien auf

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <ViewFlipper Android:layout_gravity="fill" Android:id="@+id/flipper" Android:layout_height="fill_parent" Android:layout_width="fill_parent">
        <ImageView Android:scaleType="fitXY" Android:layout_width="fill_parent" Android:layout_height="fill_parent" Android:src="@drawable/tour_1"/>
        <ImageView Android:scaleType="fitXY" Android:layout_width="fill_parent" Android:layout_height="fill_parent" Android:src="@drawable/tour_2"/>
        <ImageView Android:scaleType="fitXY" Android:layout_width="fill_parent" Android:layout_height="fill_parent" Android:src="@drawable/tour_3"/>
        <ImageView Android:scaleType="fitXY" Android:layout_width="fill_parent" Android:layout_height="fill_parent" Android:src="@drawable/tour_4"/>
        <ImageView Android:scaleType="fitXY" Android:layout_width="fill_parent" Android:layout_height="fill_parent" Android:src="@drawable/tour_5"/>
        <ImageView Android:scaleType="fitXY" Android:layout_width="fill_parent" Android:layout_height="fill_parent" Android:src="@drawable/tour_6"/>
        <ImageView Android:scaleType="fitXY" Android:layout_width="fill_parent" Android:layout_height="fill_parent" Android:src="@drawable/tour_7"/>
        <ImageView Android:scaleType="fitXY" Android:layout_width="fill_parent" Android:layout_height="fill_parent" Android:src="@drawable/tour_8"/>
        <ImageView Android:scaleType="fitXY" Android:layout_width="fill_parent" Android:layout_height="fill_parent" Android:src="@drawable/tour_9"/>
        <ImageView Android:scaleType="fitXY" Android:layout_width="fill_parent" Android:layout_height="fill_parent" Android:src="@drawable/tour_10"/>
        <ImageView Android:scaleType="fitXY" Android:layout_width="fill_parent" Android:layout_height="fill_parent" Android:src="@drawable/tour_11"/>
    </ViewFlipper>

    <LinearLayout Android:id="@+id/exit_bar" Android:layout_gravity="top" Android:layout_width="fill_parent" Android:layout_height="wrap_content" Android:background="@drawable/blue_bar" Android:visibility="invisible">
        <Button Android:background="@drawable/orange_btn" Android:layout_height="wrap_content" Android:layout_width="wrap_content" Android:layout_gravity="center" Android:textStyle="bold" Android:textColor="#000000" Android:shadowColor="#ffffff" Android:shadowRadius="1.6" Android:shadowDx="1.5" Android:shadowDy="1.3" Android:id="@+id/exit_tour_btn" Android:text="Exit" Android:layout_marginLeft="20dip"/>
        <TextView Android:layout_height="wrap_content" Android:textColor="#ffffff" Android:layout_gravity="center" Android:layout_width="110dip" Android:layout_marginLeft="20dip" Android:textSize="16dip" Android:textStyle="bold" Android:text="Life360 Tour"/>

    </LinearLayout>

    <Button style="@style/BlueBtn" Android:text="Continue" Android:layout_marginTop="40dip" Android:id="@+id/continue_btn" Android:visibility="gone" Android:layout_height="wrap_content" Android:layout_width="wrap_content" Android:layout_gravity="center" />

    <FrameLayout Android:id="@+id/bottom_bar" Android:layout_gravity="bottom" Android:layout_width="fill_parent" Android:layout_height="wrap_content" Android:background="@drawable/blue_bar" Android:visibility="invisible">
        <ImageView Android:layout_height="wrap_content" Android:layout_width="wrap_content" Android:id="@+id/left" Android:layout_gravity="left|center" Android:background="@drawable/tour_left" Android:layout_marginLeft="10dip"/>
        <ImageView Android:layout_height="wrap_content" Android:layout_width="wrap_content" Android:id="@+id/right" Android:layout_gravity="right|center" Android:background="@drawable/tour_right" Android:layout_marginRight="10dip"/>               
    </FrameLayout>
</merge>
123
Solvek

Die Aufblähungsausnahme ist nicht das eigentliche Problem, sondern kommt tatsächlich von einem anderen tieferen Problem in Ihrem Layout, das dann in eine InflateException verpackt wird .. Ein häufiges Problem ist eine Ausnahme wegen unzureichenden Arbeitsspeichers, wenn versucht wird, eine Imageview aufzublähen, die eine Ressource mit Inhalt lädt. Wenn eine dieser Ressourcen eine hohe Pixelauflösung hat, würde dies eine Menge Speicherplatz erfordern, der dann eine Aufblähungsausnahme verursachen würde.

Vergewissern Sie sich im Wesentlichen, dass die Pixelauflösung in Ihren Drawables-Bildern nur das für Ihr Layout erforderliche Minimum ist.

243
vnportnoy

ViewFlipper lädt alle Bilder in den Speicher, während das Layout aufgeblasen wird. Da meine Bilder groß sind und viel Speicher benötigen, habe ich ViewFlipper durch ImageSwitcher ersetzt, wodurch die Bilder durch Animationen wie ViewFlipper geändert werden können, es wird jedoch nur ein Bild geladen.

24
Solvek

Dies kann auch passieren, wenn Sie eine VectorDrawable mit der Unterstützungsbibliothek verwenden und vergessen, app:srcCompat anstelle von Android:src zu verwenden.

Der genaue Fehler ist: Binäre XML-Dateizeile #XX: Fehler beim Aufblasen der Klasse ImageView

Siehe diesen Link

18
lujop

Ich weiß, dass die Frage bereits beantwortet ist, aber ich poste immer noch mit dem Gedanken, dass jemand auf dieses Problem stoßen könnte.

In meinem Fall Problem lade ich meine Anwendung auf ein Telefon, das auf Layouts aus res/layout/folder und Werte für @dimens aus res/values ​​/ dimens verweist. Hierbei handelt es sich um font_22, auf die zugegriffen wird, und es wird in res/values-xlarge definiert/Dimens.

Ich aktualisiere gerade die Benutzeroberfläche eines bestehenden Projekts.

Ich bin auf dieses Problem gestoßen, weil ich IDE Eclipse verwende, wo ich beim Schreiben von XML für Layoutordner Strg + Leerzeichen für Hinweis halte. Es zeigt alle Werte von Werten sowie den Ordner Werte-Xlarge an, unabhängig davon, für welchen Ordner ich bin Schreiben.

Ich weiß auch, dass die Werte in beiden Dateien für unterschiedliche Bildschirme gleich sein sollen.

Ich hoffe, dies kann jemandem helfen, auf ein dummes Problem dieser Art zu stoßen.

9

Beim Erstellen einer benutzerdefinierten Ansicht mit nur einem Konstruktor war derselbe Fehler. Versuchen Sie, den gesamten Konstruktor für Ihre benutzerdefinierten Ansichten zu definieren.

   public CustomWebView(Context context) {
        super(context);
        init();
    }

    public CustomWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public CustomWebView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }
7
Wildan Muhlis

Meine Bildgröße ist nur 14 KB, aber das Problem ist, dass der Designer mir 1011px x 1819px gab (Auflösung zu hoch, wodurch InflateException verursacht wird)

5
Han Heong Ho

Falls jemand ähnliche Probleme bekommt, hatte ich ein solches Problem beim Aufblasen der Ansicht:

View.inflate(getApplicationContext(), R.layout.my_layout, null)

behoben durch Ersetzen von getApplicationContext() durch this

5
hedisam

Ich hatte diesen Fehler, weil ich das Thema als Material gewählt habe. Aber als ich versuchte, App auf 4.4.2 auszuführen, gab es diesen Fehler.

Lösung: Wählen Sie Theme_holo als Design aus

Dieser Link kann Ihnen helfen. Prüfen Sie in Ihrem Manifest nach Problemen. Wenn Sie es erneut ausführen können, veröffentlichen Sie Ihren gesamten Stack-Trace, damit wir sehen können, was der Fehler tatsächlich ist.

BEARBEITEN: Ich bin sicher, dass Sie dies überprüft haben, aber in Zeile 12 der XML-Datei, die Sie für das TourActivity-Layout verwenden.

4
kcoppock

Ich bin auf den gleichen Fehler gestoßen und habe den Grund dafür gefunden:

Verwenden Sie Anwendungskontext, um die Ansicht zu vergrößern.

Durch das Aufblasen mit Aktivitätskontext wurde der Fehler behoben.

4
cox

Für mich war die Fehlermeldung in der Log-Cat eigentlich unzureichend. Ich habe also herausgefunden, was das Problem verursacht hat:

(In der Log Cat-Fehlermeldung wurde angegeben, dass der Fehler beim Aufblasen eines bestimmten Layouts in meiner HomeFragment.Java aufgetreten ist.) 

  1. Ich habe einen Haltepunkt gesetzt, kurz bevor das Layout aufgeblasen wurde
  2. Ich habe die Anwendung im Debug-Modus ausgeführt, bis dieser bestimmte Haltepunkt erreicht wurde
  3. Ich habe die Zeile mit dem Cursor ausgewählt und Evaluate expression darauf ausgeführt:
    • Run > Evaluate Expression oder alt - F8
  4. Das Ergebnis zeigte mir mehr Informationen über die Ursache des Problems. In meinem Fall handelte es sich um eine zeichnbare Datei mit tools:targetApi="Lollipop" (der Fehler trat nur bei älteren Geräten auf).
3
Julian Honma

Ich hatte den gleichen Fehler und ich konnte das Verschieben meiner Zeichen aus dem Ordner drawable-mdpi in den Ordner drawable verschieben. Ich habe einige Zeit gebraucht, um zu realisieren, dass in Eclipse alles perfekt funktionierte, während ich in Android Studio diese unschönen Laufzeitfehler bekam.

Notiz bearbeiten: Wenn Sie von Eclipse zu Android Studio migrieren und Ihr Projekt von Eclipse stammt, kann dies passieren. Seien Sie also vorsichtig, dass sich in Android Studio etwas von Eclipse unterscheidet.

2
Mark

Ich weiß, es ist eine beantwortete Frage, aber ich sehe nicht die Ursache, der ich begegnet bin.

Es war so, dass Android Studio meine Drawables in /drawable-V24Meine Emulator-API 23 platziert hat. So kann es schließlich nicht gefunden werden.

Die Lösung bestand darin, alle Drawables in den/Drawable-Ordner (Nr. -24) zu verschieben.

1
alsaleem

Ich weiß, dass dieser Thread alt ist, beantworte ihn aber immer noch, damit niemand schlaflose Nächte verbringen kann.

Ich habe ein altes Projekt überarbeitet, dessen Layout-Dateien alle fest codierte Attribute wie Android:maxLength = 500 enthielten. Also habe ich beschlossen, es in meiner res/dimen -Datei als <dimen name="max_length">500</dimen> zu registrieren.

Überarbeitung von fast 30 Layoutdateien mit meinem Res-Wert abgeschlossen. Erraten Sie, was? Das nächste Mal, als ich mein Projekt ausführte, begann es, dasselbe InflateException zu werfen.

Als Lösung musste ich alle Änderungen wiederholen und all diese Werte wie zuvor beibehalten.

TLDR;

schritt 1: Alles läuft gut.

schritt 2: Um meine Wartung zu verbessern, habe ich Android:maxLength = 500 durch <dimen name="max_length">500</dimen> und Android:maxLength = @dimen/max_length ersetzt, da ist alles schiefgegangen (Absturz mit InflateException).

schritt 3: Alles läuft schlecht

schritt 4: Wiederholen Sie meine gesamte Arbeit, indem Sie Android:maxLength = @dimen/max_length erneut durch Android:maxLength = 500 ersetzen.

schritt 5: Alles läuft gut.

1
iCantC

Sie sollten die Bilddateien aus dem Ordner "drawable-24" in den Ordner "drawable" kopieren.

1
Emre Aydemir

In meinem Fall tritt dieser Fehler auf, wenn ich die Floating-Aktionstaste benutze und Android:backgroundTint="#000" setze. Dann setzen Sie einfach nicht backgroundTint und lösen das Problem nicht . Ich hoffe, es ist hilfreich für Sie.

1
Luan Si Ho

Ich hatte gerade dieses Problem und konnte herausfinden, was es war. Bezog sich auf eine Farbe in meinen Werten, die Probleme verursachte. Also manuell definiert, anstatt einen aus dem Dropdown-Vorschlag zu verwenden. Dann hat es funktioniert! 

1

Ich hatte denselben Fehler, als ich meine App auf API-Level 16 (26 war in Ordnung) ausgeführt wurde. Es war, weil ich ?attrr/colorAccent in meiner Form gezeichnet habe:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="rectangle">

    <corners Android:radius="8dp" />

    <solid Android:color="@attr/colorAccent" />

</shape>

Das Ersetzen durch eine normale Farbe hat mein Problem behoben.

1

ich hatte das gleiche Problem und löste es, indem ich drawable-v24 mit (24) vor den Bildern im Zeichenordner entfernte und sie durch gewöhnliche Zeichen ersetzte.

0
ghane nikraftar

Ich fand den gleichen Fehler und es dauerte zwei Tage, um herauszufinden, was der Fehler war.

Der Fehler war einfach, weil ich versuchte, einen zu verwenden: Android:background

Anstelle von: app:srcCompat

in einer SVG-Datei.

In Ihrem Fall glaube ich, dass es das ist

<ImageView 
    Android:scaleType="fitXY" 
    Android:layout_width="fill_parent" 
    Android:layout_height="fill_parent" 
    Android:src="@drawable/tour_11"      <-- the error is here !
 />

Ich hoffe das hilft.

0
Williaan Lopes

In meinem Fall muss ich den vollständigen Paketnamen der Bibliotheks-UI-Komponente angeben, die ich in meiner Layoutdatei verwende.

0
christian mini

Wir müssen die API-Version überprüfen. Früher habe ich meiner LinearLayout-Farbe Hintergrundfarbe gegeben 

<LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:background="@drawable/as_royalblue"
        Android:orientation="vertical"></LinearLayout>

sicher hatte ich den gleichen Fehler, as_royalblue.xml in drawable Ordner

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="rectangle">
    <gradient
        Android:angle="90"
        Android:endColor="@color/royalblue_s"
        Android:startColor="@color/royalblue_e" />
</shape>

und wie ich es behoben habe , es scheint tatsächlich ein Api-Problem zu sein, also müssen wir das API-Niveau überprüfen, wenn es über API 24 liegt, damit wir die Art und Weise verwenden können, die wir mögen. Wenn es jedoch unter 24 ist, müssen wir die Verwendung vermeiden. Die Juts geben eine normale Farbe oder eine Farbe, die keine Farbverläufe enthält.

fun checkAPI_N(): Boolean {
        if (Android.os.Build.VERSION.SDK_INT >= Android.os.Build.VERSION_CODES.N)
            return true
        else
            return false
    }

geben Sie Ihren linearen Layouts eine ID und legen Sie Hintergründe fest, wenn sie in Ordnung sind

 if(UtilKotlin.checkAPI_N()){
            linlay_act_menu_container.setBackgroundResource(R.drawable.a_6)
            linlay_act_menu_logo.setBackgroundResource(R.drawable.as_strain)
        }else {//todo normal color background setting}
0
Sam

Ich war auch mit einem ähnlichen Problem konfrontiert. Während dies für jedermann ein Problem der verschiedenen schlechten Verwendungen in Code sein kann, wie z

  1. Falsches Layout-Tag in XML
  2. Laden der schweren Ressource direkt in ImageView, was zu OOM führt
  3. Probleme mit der Verwendung von Stilen.

Ein am meisten ignorierter Faktor kann die Verwendung des richtigen Kontext beim Aufblasen von Ansichten sein. Stellen Sie sicher, dass Sie ApplicationContext nicht verwenden, wenn ein Aktivitätskontext erforderlich ist. ApplicationContext kann zwar nicht immer fehlerhaft sein, aber abhängig von Ihrer Ansichtshierarchie kann dies entscheidend sein.

Ich habe mein Problem mit einem schlechten Kontext gelöst (mit ApplicationContext anstelle von Activity innerhalb von 4 Tagen! Versuchen Sie es also, wenn sich das löst. Happy Coding !!

0
sud007

Bei mir ist es passiert, weil ich versucht habe, xml-Vektorgrafiken mit normalem PNG in derselben Layoutdatei zu mischen.

erst nachdem ich die xml-vektorgrafiken durch pngs ersetzt hatte, fing es an zu arbeiten

0
Daniel

Ich hatte das gleiche Problem, ich hatte View-Tag in XML anstelle von View verwendet. Durch das Ersetzen in die Klasse View wurde das Problem behoben. 

Ich hoffe es hilft auch für dich ..

0
Kavya Shravan