Ich erhalte viele Fehler, die im Betreff angezeigt werden. Diese Fehler scheinen gelegentlich zu sein und ich kann sie nicht reproduzieren. Aus dem Stapel kann ich lernen, dass ein solcher Fehler für meine verschiedenen Layoutressourcen auftreten kann. Die XML-Zeile 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>
android
xml
resources
android-inflate
Solvek
quelle
quelle
Antworten:
Die Inflate-Ausnahme ist eigentlich nicht das Problem, sondern kommt von einem anderen tieferen Problem in Ihrem Layout, das dann in eine InflateException eingeschlossen wird. Ein häufiges Problem ist eine Ausnahme wegen Speichermangels, wenn versucht wird, eine Bildansicht aufzuladen und eine zeichnbare Ressource zu laden. Wenn eine dieser Ressourcen eine hohe Pixelauflösung hat, würde viel Speicher benötigt, was zu einer Aufblähungsausnahme führen würde.
Stellen Sie daher grundsätzlich sicher, dass die Pixelauflösung in Ihren Drawables-Bildern nur das für Ihr Layout erforderliche Minimum darstellt.
quelle
ViewFlipper
Lädt alle Bilder während des Aufblasens des Layouts in den Speicher. Weil meine Bilder groß sind dauert es viele Speicher, I ersetztViewFlipper
mitImageSwitcher
denen die Bilder mit Animation wie ändern können ,ViewFlipper
aber es lädt nur ein Bild an der Zeit.quelle
Dies kann auch passieren , wenn Sie eine Verwendung
VectorDrawable
mit Support - Bibliothek und vergessen zu verwendenapp:srcCompat
stattandroid:src
Der genaue Fehler lautet: Binäre XML-Dateizeile #XX: Fehler beim Aufblasen der Klasse ImageView
Siehe diesen Link
quelle
Ich hatte den gleichen Fehler beim Erstellen einer benutzerdefinierten Ansicht mit nur einem Konstruktor. Versuchen Sie, alle Konstruktoren für Ihre benutzerdefinierten Ansichten zu definieren.
quelle
Ich weiß, dass die Frage bereits beantwortet ist, aber ich poste immer noch mit dem Gedanken, dass jemand auf diese Art von Problem stoßen könnte.
In meinem Fall lade ich meine Anwendung auf ein Telefon, das Layouts aus res / layout / folder und Werte für @dimens aus res / values / dimension referenziert. Hier ist es font_22, auf das zugegriffen werden soll, und es wird in res / values-xlarge definiert / dimension.
Ich aktualisiere gerade die Benutzeroberfläche des vorhandenen Projekts.
Ich bin auf dieses Problem gestoßen, weil ich IDE Eclipse verwende, bei dem ich beim Schreiben von XML für den Layoutordner Strg + Leerzeichen für Hinweise drücke. Dabei werden alle Werte aus Werten sowie der Ordner values-xlarge angezeigt, unabhängig davon, für welchen Ordner ich schreibe.
Ich weiß auch, dass die Werte in beiden Dateien für verschiedene Bildschirme gleich sein sollten.
Ich hoffe, dies kann jemandem helfen, auf diese Art von dummem Problem zu stoßen.
quelle
Ich bin auf denselben Fehler gestoßen und habe festgestellt, dass der Grund dafür ist:
Verwenden Sie den Anwendungskontext, um die Ansicht aufzublähen.
Das Aufblasen mit dem Aktivitätskontext hat den Fehler behoben.
quelle
Meine Bildgröße beträgt nur 14 KB, aber das Problem ist, dass der Designer mir 1011 x 1819 Pixel gegeben hat (Auflösung zu hoch, wodurch die InflateException verursacht wird).
quelle
Falls jemand ähnliche Probleme hat, hatte ich ein solches Problem beim Aufblasen der Ansicht:
View.inflate(getApplicationContext(), R.layout.my_layout, null)
behoben durch Ersetzen
getApplicationContext()
durchthis
quelle
Ich hatte diesen Fehler, weil ich das Thema als Materialthema ausgewä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 Thema aus
quelle
4.2.2
. Aber wo wechsle ich von Material Theme zu Theme_holo? Ich sehe das Schlüsselwort Material nicht in meinemstyles.xml
oderv21/styles.xml
. Siehe meine Frage: stackoverflow.com/questions/37883677/…Dieser Link kann Ihnen helfen. Versuchen Sie, Ihr Manifest auf Probleme zu überprüfen. Wenn Sie es wieder schaffen, 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 was steht in Zeile 12 der XML-Datei, die Sie für das TourActivity-Layout verwenden?
quelle
Für mich war die Fehlermeldung in der Protokollkatze tatsächlich unzureichend. Deshalb habe ich Folgendes getan, um herauszufinden, 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.)
Evaluate expression
:Run > Evaluate Expression
oderalt - F8
tools:targetApi="lollipop"
(der Fehler trat nur bei älteren Geräten auf).quelle
Ich habe den gleichen Fehler gefunden und es dauerte zwei Tage, um den Fehler zu identifizieren.
Der Fehler war einfach, weil ich versuchte zu verwenden:
android:background
Eher, als:
app:srcCompat
in einer SVG-Datei.
In Ihrem Fall glaube ich, dass es das ist
Ich empfehle es so zu benutzen
Fügen Sie dies Ihrer build.gradle- App hinzu
und
Ich hoffe das hilft.
quelle
Ich weiß, dass es eine beantwortete Frage ist, aber ich sehe nicht die Ursache, mit der ich konfrontiert war.
Es war, dass Android Studio meine Drawables in / drawable-V24 platziert hat. Mein Emulator ist API 23. Also kann er es schließlich nicht finden.
Die Lösung bestand darin, alle Drawables in den Ordner / drawable (Nr. -24) zu verschieben.
quelle
Sie sollten die Bilddateien aus dem Ordner "drawable-24" in den Ordner "drawable" kopieren.
quelle
Ich hatte den gleichen Fehler und habe das Verschieben meiner Drawables aus dem Ordner drawable-mdpi in den Ordner drawable gelöst. Ich habe einige Zeit gebraucht, um zu erkennen, dass in Eclipse alles perfekt funktioniert hat, während ich in Android Studio diese hässlichen Laufzeitfehler bekam.
Hinweis zum Bearbeiten: Wenn Sie von Eclipse zu Android Studio migrieren und Ihr Projekt von Eclipse stammt, kann dies passieren. Achten Sie daher darauf, dass sich die Dinge in Android Studio ein wenig von Eclipse unterscheiden.
quelle
In meinem Fall tritt dieser Fehler auf, wenn ich die schwebende Aktionsschaltfläche verwende und einstelle
android:backgroundTint="#000"
. Dann einfach nicht einstellenbackgroundTint
und Problem lösen. Hoffe es ist hilfreich für dich.quelle
app:backgroundTint
statt verwendenandroid:backgroundTint
.Für mich war mein Problem, dass ich war
Bei einem LinearLayout-Hintergrund bestand der Test, nachdem ich ihn entfernt hatte.
quelle
Ich hatte gerade dieses Problem und konnte herausfinden, was es war. Ich habe in meinen Werten auf eine Farbe verwiesen, die Probleme verursacht hat. Definieren Sie es also manuell, anstatt eines aus den Dropdown-Vorschlägen zu verwenden. Dann hat es funktioniert!
quelle
Ich hatte den gleichen Fehler, als ich meine App auf API Level 16 ausführte (26 war in Ordnung). Es war, weil ich
?attrr/colorAccent
in meiner Form zeichnbar verwendet habe:Das Ersetzen durch eine normale Farbe hat mein Problem behoben.
quelle
Ich hatte das gleiche Problem und es wurde gelöst, indem drawable-v24 mit (24) vor Bildern in einem zeichnbaren Ordner entfernt und durch gewöhnliche Drawables ersetzt wurde.
quelle
Ich weiß, dass dieser Thread alt ist, aber ich beantworte ihn immer noch, damit niemand sonst schlaflose Nächte verbringen sollte.
Ich habe ein altes Projekt überarbeitet, dessen Layoutdateien alle fest codierte Attribute enthielten, wie z
android:maxLength = 500
. Also habe ich beschlossen, es in meinerres/dimen
Datei als zu registrieren<dimen name="max_length">500</dimen>
.Das Refactoring von fast 30 Layoutdateien mit meinem Res-Wert ist abgeschlossen. Erraten Sie, was? Als ich das nächste Mal mein Projekt ausführte, begann es dasselbe zu werfen
InflateException
.Als Lösung musste ich alle Änderungen wiederholen und all diese Werte wie zuvor beibehalten.
TLDR;
Schritt 1: Alles läuft gut.
Schritt 2: meine Wartung I ersetzt zu steigern
android:maxLength = 500
mit<dimen name="max_length">500</dimen>
undandroid:maxLength = @dimen/max_length
, das ist , wo alles schief gelaufen ist (Absturz mitInflateException
).Schritt 3: Alles läuft schlecht
Schritt 4: Re-do all meine Arbeit wieder ersetzt
android:maxLength = @dimen/max_length
mitandroid:maxLength = 500
.Everything wurde behoben.Schritt 5: Alles läuft gut.
quelle
Es wurde behoben, indem alle meine Zeichenelemente von drawable-v24 auf drawable verschoben wurden
quelle
Ich hatte auch ein ähnliches Problem. Während für jedermann dies ein Problem verschiedener schlechter Verwendungen im Code sein kann, wie z
Ein am meisten ignorierter Faktor kann die Verwendung des richtigen Kontexts beim Aufblasen von Ansichten sein. Stellen Sie sicher, dass Sie ApplicationContext nicht verwenden, wenn ein Aktivitätskontext erforderlich ist. Während ApplicationContext in Fehlern kann am Ende nicht immer, aber nach Ihrer Ansicht Hierarchie abhängig kann es entscheidend sein.
Ich habe mein Problem mit einem SCHLECHTEN Kontext gelöst ( innerhalb von 4 Tagen ApplicationContext anstelle von Aktivität verwenden ! Versuchen Sie also, das zu lösen. Happy Coding !!
quelle
Ich hatte das gleiche Problem, ich hatte das View-Tag in XML anstelle von View verwendet. Das Ersetzen in die View-Klasse hat das Problem behoben.
Hoffe es hilft dir auch ..
quelle
Wir müssen die API-Version überprüfen. Ich verwendete Hintergrundfarbe meiner geben
LinearLayout
wieSicher hatte ich den gleichen Fehler
as_royalblue.xml
imdrawable
Ordnerund wie ich es behoben habe , scheint es tatsächlich ein API-Problem zu sein, also müssen wir die API-Ebene überprüfen, wenn sie über API 24 liegt, damit wir die Art und Weise verwenden können, die wir möchten. Aber wenn es unter 24 ist, müssen wir die Verwendung vermeiden, Juts geben eine normale Farbe oder eine Farbe nicht Farbgradienten gemischt.
Geben Sie Ihren linearen Layouts eine ID und legen Sie die Hintergründe fest, wenn dies in Ordnung ist
quelle
In meinem Fall muss ich den vollständigen Paketnamen der Bibliotheks-UI-Komponente angeben, die ich in meiner Layoutdatei verwende.
quelle
Für mich ist es passiert, weil ich versucht habe, XML-Vektorgrafiken mit gewöhnlichem PNG in derselben Layoutdatei zu mischen.
Erst nachdem ich die XML-Vektorgrafiken durch PNGs ersetzt hatte, fing es an zu funktionieren
quelle
Ich löse gerade dieses Problem, lösche einfach deine Bilder aus Drawable (v24) und füge sie einfach in einen Drawable-Ordner ein, der für mich funktioniert.
quelle
Ich hatte den gleichen Fehler in
Crashlytics
von einem seltsamen Gerät: Motorola One Vision Android 5.1 und 20 GB (freier) RAM, gerootet Dieses Gerät kommt ursprünglich mit Android 9.0, 4 GB RAMWahrscheinlich versucht jemand, die App zu hacken, die ich gerade entwickle, und hat Probleme mit Multi-APKs. Drawables können also nicht gefunden werden und die App liefert den Absturz
quelle