android.view.inflateException: Binärer XML -Dateizeile Nr. 12: Fehler beim Aufblasen der Klasse

StackOverflow https://stackoverflow.com/questions/4512981

Frage

Ich erhalte viele Art, die im SubJ angezeigt werden. Diese Fehler scheinen gelegentlich zu sein und ich kann sie nicht reproduzieren. Aus Stack kann ich erfahren, dass ein solcher Fehler für meine unterschiedlichen Layout -Ressourcen auftritt. Die XML -Linie variiert ebenfalls.

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 XMLs 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>
War es hilfreich?

Lösung

Die Aufblasen -Ausnahme ist eigentlich nicht das Problem, sondern stammt wirklich aus einem anderen tieferen Problem in Ihrem Layout, das dann in eine Aufblasenexception eingewickelt wird. Ein häufiges Problem ist eine Ausnahme in der Speicher, wenn Sie versuchen, ein ImageView beim Laden einer zeichnbaren Ressource aufzublasen. Wenn eine dieser Ressourcen eine hohe Pixelauflösung hat, würde es viel Gedächtnis dauern, was eine Ausnahme aufblase.

Überprüfen Sie also grundsätzlich, dass die Pixelauflösung in Ihren Drawables -Bildern nur das für Ihr Layout erforderliche Minimum ist.

Andere Tipps

ViewFlipper Laden Sie alle Bilder in das Gedächtnis beim Aufblasen des Layouts. Weil meine Bilder groß sind, braucht ich viele Erinnerungen, ich habe ersetzt ViewFlipper mit ImageSwitcher was die Bilder mit Animation verändern kann wie ViewFlipper Aber es lädt zu der Zeit nur ein Bild.

Dies kann auch passieren, wenn Sie a verwenden VectorDrawable Verwenden von Support Library und vergessen zu verwenden app:srcCompat Anstatt von android:src

Genauer Fehler ist: Binärer XML -Dateizeile #xx: Fehler beim Aufblasen von Klassen imageView

Sehen Sie diesen Link

Ich weiß, dass die Frage bereits beantwortet wurde, aber ich poste immer noch mit Gedanken, dass jemand auf diese Art von Problem stoßen kann.

In meinem Fall lade ich meine Anwendung zum Telefon, das Layouts aus Res/Layout/Ordner und Werten für @dimens aus Res/Werten/Abmens hier verweist. /Abmens.

Ich aktualisiere tatsächlich die Benutzeroberfläche des vorhandenen Projekts.

Ich bin auf dieses Problem gestoßen, weil ich IDE Eclipse verwende, in dem ich beim Schreiben von XML für Layout-Ordner alle Werte aus Werten sowie Werte-Xlarge-Ordner, unabhängig davon, welchen Ordner ich schreibe, alle Werte angezeigt werden.

Ich weiß auch, dass die Werte in beiden Dateien für verschiedene Bildschirme zugeordnet werden sollten.

Ich hoffe, dies kann jemandem helfen, auf diese Art von dummen Problem zu stoßen.

Ich hatte den gleichen Fehler beim Erstellen einer benutzerdefinierten Ansicht mit nur einem Konstruktor, versuchen Sie, alle 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();
    }

Ich bin auf den gleichen Fehler gestoßen und fand, dass der Wurzelgrund ist:

Verwenden Sie den Anwendungskontext, um die Sicht aufzublasen.

Das Aufblasen mit Aktivitätskontext hat den Fehler behoben.

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

Lösung: Wählen Sie themen_holo als Thema aus

Meine Bildgröße beträgt nur 14 KB, aber das Problem ist, dass der Designer mir 1011px x 1819px gegeben hat (Auflösung zu hoch, wodurch die Aufblasenexception verursacht wird)

Falls jemand ähnliche Probleme bekommt, hatte ich ein solches Problem, während ich die Ansicht aufblasen habe:

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

behoben durch Ersetzen getApplicationContext() mit this

Dieser Link kann Ihnen helfen. Versuchen Sie, Ihr Manifest nach Problemen zu überprüfen. Wenn Sie es wieder ermöglichen können, veröffentlichen Sie Ihre gesamte Stapelspur, damit wir sehen können, was der Fehler tatsächlich ist.

Bearbeiten: Ich bin sicher, Sie haben dies überprüft, aber was ist in Zeile 12 der XML -Datei, die Sie für das Touraktivitätslayout verwenden?

Für mich war die Fehlermeldung in der Protokollkatze tatsächlich unzureichend. Hier ist, was ich getan habe, um herauszufinden, was das Problem verursacht hat:

(In der Log Cat -Fehlermeldung heißt es, dass der Fehler aufgetreten ist, während ein bestimmtes Layout in meiner homefragment.java aufgeblasen wurde.)

  1. Ich habe einen Haltepunkt kurz vor dem Aufblasen des Layouts gestellt
  2. Ich habe die Anwendung im Debug -Modus ausgeführt, bis sie diesen spezifischen Haltepunkt erreichte
  3. Ich habe die Linie mit meinem Cursor ausgewählt und rannte Evaluate expression darauf:
    • Run > Evaluate Expression oder alt - F8
  4. Das Ergebnis zeigte mir weitere Informationen über die Quelle des Problems, die in meinem Fall eine zeichnbare Datei mithilfe der Verwendung war tools:targetApi="lollipop" (Der Fehler trat nur auf älteren Geräten auf).

Ich weiß, dass es eine beantwortete Frage ist, aber ich sehe nicht die Ursache, mit der ich ausgesetzt war.

Es war so, dass Android Studio meine Drawables in /Drawable-V24 platzierte. Mein Emulator ist API 23. Also kann es es schließlich nicht finden.

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

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

Ich hatte den gleichen Fehler und löste das Bewegen meiner Drawables aus dem Ordner Drawable-MDPI in den zeichnbaren Ordner. Ich habe einige Zeit gebraucht, um zu realisieren, denn in Eclipse hat alles perfekt funktioniert, während ich in Android Studio diese hässlichen Laufzeitfehler bekam.

Notiz bearbeiten: Wenn Sie von Eclipse nach Android Studio migrieren und Ihr Projekt aus Sonnenfinsternis stammt, kann dies geschehen. Achten Sie also darauf, dass sich in Android Studio die Dinge ein wenig von Eclipse unterscheiden.

In meinem Fall tritt dieser Fehler auf, wenn ich das verwende Schwebender Aktionstaste und set android:backgroundTint="#000". Dann setzen Sie einfach nicht backgroundTint und Problem gelöst. Hoffe es ist hilfreich für dich.

Ich hatte dieses Problem gerade und schaffte es herauszufinden, was es war. Bezogen sich auf eine Farbe in meinen Werten, die Probleme verursachte. So definiert es manuell, anstatt eine aus den Dropdown -Vorschlägen zu verwenden. Dann funktionierte es!

Ich hatte den gleichen Fehler, als ich meine App auf API LVL 16 leitete (26 ging es gut). Es war, weil ich benutzt habe ?attrr/colorAccent in meiner Form zeichnet:

<?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 regelmäßige Farbe behinderte mein Problem.

Ich hatte das gleiche Problem und es löste es, indem ich Drawable-V24 mit (24) vor den Bildern im Zeichnungsordner entfernt und durch gewöhnliche Drawables ersetzt hatte.

Ich weiß, dass dieser Thread alt ist, aber immer noch beantwortet, damit niemand sonst schlaflose Nächte verbringen sollte.

Ich habe ein altes Projekt neu gestalt android:maxLength = 500. Also habe ich beschlossen, es in meinem zu registrierenres/dimen Datei als <dimen name="max_length">500</dimen>.

Fertiger Refactoring Fast 30 Layout-Dateien mit meinem RES-Wert. Erraten Sie, was? Als ich das nächste Mal mein Projekt lief, begann es das gleiche zu werfen InflateException.

Als Lösung benötigt, um meine Veränderungen zu wiederholen und all-diese-Werte so wie zuvor zu halten.

TLDR;

Schritt 1: Alle laufen gut.

Schritt 2: Um meine Wartung zu steigern, habe ich ersetzt android:maxLength = 500 mit <dimen name="max_length">500</dimen> und android:maxLength = @dimen/max_length Hier ist alles schief gelaufen (krach mit InflateException).

Schritt 3: Alle laufen schlecht

Schritt 4: Alle meine Arbeiten erneut durchsetzen, indem Sie erneut ersetzen android:maxLength = @dimen/max_length mit android:maxLength = 500Alles wurde repariert.

Schritt 5: Alle laufen gut.

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

Der Fehler lag einfach daran, dass ich versuchte, einen zu verwenden: android:background

Statt: app:srcCompat

in einer SVG -Datei.

In Ihrem Fall glaube ich, dass dies 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 empfehle es so zu verwenden

<androidx.appcompat.widget.AppCompatImageView  <-- use **AppCompatImageView** not **ImageView**
        android:scaleType="fitXY" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        app:srcCompat="@drawable/tour_11"
     />

Ich hoffe das hilft.

Ich hatte auch ein ähnliches Problem. Während dies für jeden ein Problem verschiedener schlechter Verwendungen in Code sein kann, wie z.

  1. Falsches Layout -Tag in XML
  2. Das Laden schwerer Ressource direkt in ImageView führt dazu Oom
  3. Probleme mit der Verwendung von Stilen.

Ein am meisten ignorierter Faktor kann sein Verwendung des korrekten Kontextes Beim Aufblasen von Ansichten. Bitte überprüfen Sie, ob Sie nicht verwenden ApplicationContext wo ein Aktivitätskontext erforderlich ist. Während, ApplicationContext Möglicherweise ist nicht immer irrtümlich, aber abhängig von Ihrer Ansicht kann es entscheidend sein.

Ich habe mein Problem mit einem schlechten Kontext gelöst (verwendete ApplicationContext Anstatt von Aktivität In einer Zeitspanne von 4 Tagen! Versuchen Sie also, wenn das löst. Happy Coding !!

Ich hatte das gleiche Problem vorhanden, ich hatte das Ansichts -Tag in XML anstelle von Ansicht verwendet. Ersetzen, um die Klasse anzuzeigen, behoben das Problem.

Hoffe es hilft auch für dich.

Wir müssen die API -Version überprüfen. Früher gab ich meinem Hintergrundfarbe LinearLayout wie

<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 Innerhalb drawable Mappe

<?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 repariert habe, Eigentlich scheint es API -Problem zu sein, daher müssen wir die API -Ebene überprüfen, wenn sie über API 24 liegt, damit wir die Art und Weise, wie wir möchten, verwenden können. Wenn es jedoch unter 24 liegt, müssen wir die Verwendung vermeiden, JUTS geben eine normale Farbe oder eine Farbe, die nicht zu einer farbenen Abschlusse gemischt sind.

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

Geben Sie Ihre Linearlayouts und setzen Sie Hintergründe, wenn es in Ordnung ist

 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}

In meinem Fall kann ich den kompletten Paketnamen der UI -Komponente der Bibliothek angeben, die ich in meiner Layout -Datei verwende.

Für mich ist es passiert, weil ich versucht habe, XML -Vektorgrafikbilder mit gewöhnlicher PNG in derselben Layout -Datei zu mischen,

Erst nachdem ich die XML -Vektorgrafiken durch PNGs ersetzt hatte, begann sie zu funktionieren

  • Ich löste dieses Problem nur, lösche einfach Ihre Bilder von Drawable (V24) und fügen Sie es einfach in den zeichnischen Ordner ein, das für mich funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top