android.view.InflateException: ligne fichier XML binaire # 12: Classe d'erreur gonflage
-
12-10-2019 - |
Question
Je reçois beaucoup d'erreurs de type affiché dans la STAB. Ces erreurs semble être de temps en temps et je ne peux pas les reproduire. De pile, je peux apprendre que ceux-ci peuvent d'erreur se produit pour mes différentes ressources de mise en page. La ligne de XML est également variable.
Quelqu'un peut-il expliquer pourquoi cette erreur se produit? Et ce que je peux faire pour résoudre ce problème?
Stack
=============================================================
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)
Voici un résultat de XML, mais une telle erreur se produit dans d'autres xmls
<?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>
La solution
L'exception est décompressé pas vraiment le problème, mais vient vraiment d'un autre problème plus profond dans votre mise en page qui est ensuite enveloppé dans un InflateException. Un problème commun est une exception de mémoire lorsque vous essayez de gonfler un chargement imageview une ressource drawable. Si l'une de ces ressources a une haute résolution de pixels, il faudrait beaucoup de mémoire causant une exception décompressé.
vérifier essentiellement que la résolution de pixels dans vos images dessinables sont juste le minimum nécessaire pour votre mise en page.
Autres conseils
charges ViewFlipper
toutes les images en mémoire lors de la mise en page de gonflage. Parce que mes images sont grandes, il prend beaucoup de mémoire, je l'ai remplacé ViewFlipper
avec ImageSwitcher
qui peut changer les images avec une animation comme ViewFlipper
mais il charge qu'une seule image à l'époque.
Cela peut également se produire si vous utilisez un VectorDrawable
en utilisant la bibliothèque de support et oublié d'utiliser app:srcCompat
au lieu de android:src
erreur exacte est: Binary ligne de fichier XML #XX: Classe d'erreur gonfler ImageView
Je sais que la question est déjà répondu mais je poste avec la pensée que quelqu'un mai rencontrer ce genre de problème.
Dans mon problème de cas est je charge ma demande au téléphone qui se réfèrent mises en page de res / layout / dossier et valeurs pour @dimens de res / valeurs / DIMENS ici, il est font_22 dont il essaie d'accès et Définissons dans res / valeurs-xlarge / dimens.
Je suis réellement mettre à jour l'interface utilisateur du projet existant.
je suis tombé sur ce problème parce que je suis en utilisant IDE Eclipse où je ctrl + espace pour soupçon lors de l'écriture XML pour la mise en page dossier, il affiche toutes les valeurs des valeurs ainsi que le dossier valeurs xlarge quel que soit le dossier pour lequel je écris .
Je sais aussi que les valeurs dans les deux fichiers doivent être identiques à cartographié pour les écrans différents.
Espérons que cela peut aider à quelqu'un INTRODUISE ce genre de problème stupide.
J'ai eu la même erreur lors de la création vue personnalisée avec un seul constructeur, essayez de définir tout constructeur pour vos vues personnalisées.
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();
}
rencontré le même bug et a trouvé la raison de la racine est:
Utiliser le contexte d'application à la vue décompressé.
Gonflage avec contexte d'activité Correction du bug.
J'ai eu cette erreur parce que je choisi le thème comme thème Matière. Mais comme je l'ai essayé d'exécuter l'application sur 4.4.2 il a donné cette erreur.
Solution: Sélectionnez Theme_holo comme thème
Ma taille de l'image est seulement 14Kb, mais le problème est que le concepteur m'a donné 1011px x 1819px (résolution trop élevée entraînant par conséquent la InflateException)
Dans le cas où quelqu'un se des problèmes similaires, j'ai eu un tel problème tout en gonflant la vue:
View.inflate(getApplicationContext(), R.layout.my_layout, null)
fixée par le remplacement getApplicationContext()
avec this
Ce lien peut vous aider . Essayez de vérifier dans votre manifeste pour des problèmes. Si vous pouvez obtenir que cela se reproduise, publier votre trace toute la pile afin que nous puissions voir ce que l'erreur est en réalité.
EDIT: Je suis sûr que vous avez vérifié cela, mais ce qui est sur la ligne 12 du fichier XML que vous utilisez pour la mise en page de TourActivity
?Pour moi, le message d'erreur était effectivement insuffisante dans le chat journal, voici donc ce que je l'ai fait pour comprendre ce qui a causé le problème:
(Dans le message d'erreur de chat de journal, il dit l'erreur est survenue lors du gonflage d'une mise en page spécifique dans mon HomeFragment.java)
- Je mets un point d'arrêt juste avant la mise en page a été gonflé
- J'ai couru l'application en mode débogage jusqu'à ce qu'il atteint ce point d'arrêt spécifique
- J'ai choisi la ligne avec mon curseur et RAN
Evaluate expression
dessus:-
Run > Evaluate Expression
oualt - F8
-
- Le résultat m'a montré plus d'informations sur la source du problème, qui dans mon cas, est un fichier étirables à l'aide
tools:targetApi="lollipop"
(le bug ne se produisait que sur les appareils plus anciens).
Je sais qu'il est une réponse à votre question, mais je ne vois pas la cause que je faisais face.
Il est que Android Studio est placé mes dessinables dans / drawable-V24 Mon émulateur est API 23. Alors, finalement, il ne peut pas le trouver.
La solution a consisté à déplacer tous dessinables à / dossier drawable (pas -24).
Vous devez copier les fichiers d'image à partir du dossier "drawable-24" dans le dossier "drawable".
J'ai eu la même erreur et je résolu déplacer mes dessinables à partir du dossier drawable-mdpi dans le dossier drawable. Il m'a fallu un certain temps pour se rendre compte parce que dans Eclipse tout a parfaitement fonctionné alors que dans Android Studio Je suis ces erreurs d'exécution laid.
Modifier la note: Si vous migrez d'éclipse à Android Studio votre projet vient d'éclipse, il peut arriver, alors soyez prudent que dans les choses Android studio un peu diffère de l'éclipse.
Dans mon cas, cette erreur se produit lorsque j'utilise le bouton d'action flottant et android:backgroundTint="#000"
ensemble. Ensuite, il suffit de faire backgroundTint
et problème non résolu ensemble.
Espérons que c'est utile pour vous.
J'ai eu ce problème tout à l'heure et a réussi à comprendre ce qu'il était. Faisait référence à une couleur dans mes valeurs qui a été à l'origine des problèmes. Donc défini manuellement au lieu d'utiliser un dans le menu déroulant suggestions.Then cela a fonctionné!
J'avais même erreur quand je courais mon application sur l'API lvl 16 (26 est très bien). C'était parce que je ?attrr/colorAccent
dans ma forme drawable:
<?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>
Le remplacement qui avec une couleur régulière fixe mon problème.
i eu le même problème et résolu en supprimant étirable-v24 avec (24) devant les images du dossier étirable et en les remplaçant par dessinables ordinaires.
Je sais que ce fil est vieux, mais toujours répondre pour que personne d'autre devrait passer des nuits blanches.
je refactoring un vieux projet, dont les fichiers mise en page contenaient tous des Hardcoded
attributs tels que android:maxLength = 500
. Je décide donc d'inscrire dans mon
fichier res/dimen
comme <dimen name="max_length">500</dimen>
.
refactoring fini près de 30 fichiers de mise en page avec ma résolution valeur. Devine quoi? la prochaine fois que je courais mon projet, il a commencé à jeter le même InflateException
.
En tant que solution, nécessaire pour refaire mes toutes les modifications et garder toutes ces valeurs-les mêmes que précédemment.
TLDR;
étape 1:. Tout bon fonctionnement
Étape 2: Pour améliorer mon entretien, j'ai remplacé android:maxLength = 500
avec <dimen name="max_length">500</dimen>
et android:maxLength = @dimen/max_length
, c'est là où tout a mal tourné (avec plantage InflateException
)
Étape 3: Tout mauvais fonctionnement
Étape 4:. Refaire tout mon travail en remplaçant à nouveau android:maxLength = @dimen/max_length
avec android:maxLength = 500
.Everything a été réparé
étape 5:. Tout bon fonctionnement
J'ai trouvé la même erreur, et il a fallu deux jours pour identifier ce que l'erreur était.
L'erreur a été simplement parce que je tente d'utiliser un: android:background
Au lieu de: app:srcCompat
dans un fichier SVG.
Dans votre cas, je crois que c'est-il
<ImageView
android:scaleType="fitXY"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/tour_11" <-- the error is here !
/>
Je recommande d'utiliser cette façon
<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"
/>
J'espère que cette aide.
J'ai aussi fait face à un problème similaire. Alors que pour toute personne cela peut être un problème de divers mauvais usages dans le code comme
- Mauvaise balise de mise en page en XML
- Chargement des ressources lourdes directement dans ImageView résultant OOM
- Problèmes liés à l'utilisation de styles.
Un facteur le plus ignoré peut être Utilisation du contexte correct en gonflant vues. S'il vous plaît vérifier que vous ne l'utilisez ApplicationContext où un contexte d'activité est nécessaire. Alors que, ApplicationContext ne peuvent pas se retrouver dans toujours l'erreur, mais en fonction de votre hiérarchie de la vue, il peut être crucial.
Je résolus mon problème avec un contexte BAD (en utilisant ApplicationContext au lieu de Activité dans une période de 4 jours! Donc, essayez si cela résout. Bonne programmation !!
Je l'avais fait face à la même question, je l'avais utilisé tag vue en XML au lieu de vue. Remplacement de la classe Voir fixe la question.
it helps pour vous aussi ..
Nous devons vérifier l'API version. Je l'habitude de donner de la couleur de fond à mon LinearLayout
comme
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/as_royalblue"
android:orientation="vertical"></LinearLayout>
pour que j'avais la même erreur, le dossier as_royalblue.xml
dans drawable
<?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>
et comment je l'ai fixé , en fait, il semble problème api donc nous avons besoin de vérifier le niveau de api si elle est au-dessus API 24 donc nous sommes en mesure d'utiliser la façon dont nous aimons. Mais si elle est moins de 24 ans, nous devons éviter l'utilisation, juts donnent une couleur normale ou une couleur pas de couleur gradential mixte.
fun checkAPI_N(): Boolean {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N)
return true
else
return false
}
donner à vos id linearlayouts et arrière-plans ensemble si son ok
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}
Dans mon cas, je l'ai de préciser le nom du package complet du composant d'interface utilisateur bibliothèque que j'utilise dans mon fichier de mise en page.
Pour moi, ce qui est arrivé parce que j'ai essayé de mélanger des images graphiques vectoriels xml avec .png ordinaire dans le même fichier de mise en page,
seulement après avoir remplacé le vecteur xml graphiques avec PNGs il a commencé à travailler
-
Je résous simplement cette question suffit de supprimer vos images de drawable (v24) et juste coller dans drawable dossier ce qui fonctionne pour moi.