Android.vue.InflateException: binaire ligne de fichier XML #12: erreur classe de gonflage
je reçois beaucoup d'erreurs de type affichée dans l'objet. Ces erreurs semblent être occasionnelles et je ne peux pas les reproduire. De la pile, je peux apprendre qu'une telle erreur peut se produire pour mes différentes ressources de layout. La ligne de XML varie également.
quelqu'un Peut-il expliquer pourquoi cette erreur se produit? Et ce que je peux faire pour résoudre ce problème?
Pile
=============================================================
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.access00(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.access00(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 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>
19 réponses
l'exception inflate n'est pas réellement le problème, mais vient vraiment d'un autre problème plus profond dans votre disposition qui est ensuite enveloppé dans une InflateException. Un problème commun est une exception hors de la mémoire lorsque vous essayez de gonfler une imageview en chargeant une ressource dessinable. Si un de ces ressources a une haute résolution en pixels, il faudrait beaucoup de mémoire provoquant alors une gonfler exception.
donc vérifiez en gros que la résolution des pixels dans vos images juste le minimum nécessaire pour votre mise en page.
ViewFlipper
charge toutes les images dans la mémoire pendant la mise en page de gonflage. Parce que mes images sont grandes il faut beaucoup de mémoire, j'ai remplacé ViewFlipper
par ImageSwitcher
qui peut changer les images avec l'animation comme ViewFlipper
mais il charge seulement une image à la fois.
cela peut aussi se produire si vous utilisez un VectorDrawable
en utilisant une bibliothèque de soutien et avez oublié d'utiliser app:srcCompat
au lieu de android:src
l'erreur exacte est: ligne de fichier binaire XML # XX: erreur gonflant la classe ImageView
je sais que la question est déjà répondue, mais je poste quand même avec la pensée que quelqu'un peut courir dans ce genre de problème.
dans mon cas, le problème est que je charge mon application sur un téléphone qui renvoie les mises en page de res/layout/ folder et les valeurs de @dimens de res/values/dimens ici, c'est font_22 auquel il essaie d'accéder et c'est défini dans res/values-xlarge/dimens.
je suis en train de mettre à jour L'interface utilisateur du projet existant.
j'ai rencontré ce problème parce que j'utilise IDE Eclipse où I Ctrl+espace pour hint tout en écrivant xml pour le dossier de mise en page il affiche toutes les valeurs à partir des valeurs ainsi que des valeurs-xlarge dossier indépendamment du dossier que je suis en train d'écrire.
je sais aussi que les valeurs dans les deux fichiers doivent être identiques à mappées pour des écrans différents.
espérons que cela puisse aider quelqu'un à tomber dans ce genre de problème stupide.
Ma taille d'image est seulement 14Kb, mais le problème est que le concepteur m'a donné 1011px x 1819px (résolution trop élevée donc causant L'InflateException)
j'ai eu la même erreur lors de la création d'une vue personnalisée avec un seul constructeur, essayez de définir tous les constructeurs 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();
}
ce lien peut vous aider. Essayez de vérifier dans votre manifeste pour les problèmes. Si vous pouvez obtenir que cela se reproduise, postez votre trace de pile entière de sorte que nous puissions voir ce que l'erreur est réellement.
modifier: Je suis sûr que vous avez Coché ceci, mais qu'est-ce qu'il y a à la ligne 12 du fichier XML que vous utilisez pour la mise en page de TourActivity?
j'ai rencontré le même bug et j'ai trouvé que la raison fondamentale est:
utiliser le contexte de L'Application pour gonfler la vue.
gonflage avec le contexte D'activité a corrigé le bogue.
j'ai eu cette erreur parce que j'ai choisi le thème comme thème Matériel. Mais comme j'essayais d'exécuter app sur 4.4.2 il a donné cette erreur.
Solution: sélectionnez Theme_holo comme thème
pour moi, le message d'erreur était en fait insuffisant dans le log cat, donc voici ce que j'ai fait pour comprendre ce qui a causé le problème:
(dans le message d'erreur log cat, il est dit que l'erreur s'est produite lors du gonflage d'une mise en page spécifique dans mon HomeFragment.java)
- j'ai mis un point d'arrêt juste avant que la disposition a été gonflée
- j'ai lancé l'application en mode debug jusqu'à ce qu'elle atteigne ce point de rupture spécifique
- j'ai sélectionné la ligne avec mon curseur et j'ai couru
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, était un fichier dessinable utilisant
tools:targetApi="lollipop"
(le bogue ne s'est produit que sur des appareils plus anciens).
dans le cas où quelqu'un obtient des questions similaires, j'ai eu un tel problème tout en gonflant la vue:
View.inflate(getApplicationContext, R.layout.my_layout, null)
fixée par remplacement de getApplicationContext
par this
j'ai eu la même erreur et j'ai résolu en déplaçant mes tirables du dossier drawable-mdpi vers le dossier drawable. Il m'a fallu du temps pour réaliser parce que dans Eclipse tout fonctionnait parfaitement tandis que dans Android Studio j'ai eu ces vilaines erreurs d'exécution.
Modifier la note: Si vous êtes en train de migrer d'eclipse vers Android Studio et que votre projet vient d'eclipse, cela peut arriver, alors faites attention que dans Android Studio les choses un peu différentes de Eclipse.
j'ai eu ce problème tout à l'heure et réussi à comprendre ce que c'était. C'était faire référence à une couleur dans mes valeurs qui causait des problèmes. Ainsi défini manuellement au lieu d'utiliser une des suggestions de dropdown.Puis il a travaillé!
dans mon cas,cette erreur se produit lorsque j'utilise le bouton D'action flottant et mis android:backgroundTint="#000"
. Alors ne mettez pas backgroundTint
et Problème résolu.
J'espère que c'est utile pour vous.
j'ai trouvé la même erreur, et il a fallu deux jours pour identifier l'erreur.
L'erreur était simplement parce que j'essayais d'utiliser un: android:background
plutôt que: app:srcCompat
dans un fichier SVG.
Dans votre cas, je crois que c'est
<ImageView
android:scaleType="fitXY"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/tour_11" <-- the error is here !
/>
j'espère que cela aidera.
j'ai aussi été confronté à un problème similaire. Alors que pour n'importe qui cela peut être une question de diverses mauvaises utilisations du Code tel que
- étiquette de mise en page erronée en XML
- chargement de ressources lourdes directement dans ImageView résultant en OOM
- Problèmes avec l'utilisation des styles.
un des facteurs les plus ignorés peut être usage du contexte correct tout en gonflant vue. Veuillez vérifier que vous n'utilisez pas ApplicationContext lorsqu'un contexte D'activité est requis. Bien que, ApplicationContext peut ne pas finir dans l'erreur toujours, mais selon votre hiérarchie de vue, il peut être crucial.
j'ai résolu mon problème avec un mauvais contexte (en utilisant ApplicationContext au lieu de activité en l'espace de 4 jours! Donc, essayez si cela résout. Heureux Le codage!!
j'avais fait face à la même question, j'avais utilisé l'étiquette de vue en xml au lieu de vue. Le remplacement de l'affichage de classe a réglé le problème.
J'espère que ça vous aidera aussi..
nous devons vérifier la Version API. J'ai utilisé pour donner 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 sûr que j'ai eu la même erreur, as_royalblue.xml
à l'intérieur drawable
dossier
<?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 corrigé , en fait, il semble problème Api donc nous devons vérifier le niveau de l'api si elle est supérieure à API 24 afin que nous sommes en mesure d'utiliser la façon dont nous aimons. Mais s'il est en dessous de 24 nous devons éviter l'utilisation, juts donner un normal couleur ou une couleur pas de couleur gradentielle mélangé un.
fun checkAPI_N(): Boolean {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N)
return true
else
return false
}
Donnez votre id à votre linearlayouts et set backgrounds si c'est 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}
je sais que c'est une question à laquelle on répond, Mais je ne vois pas la cause à laquelle j'ai fait face.
C'est que Android Studio a placé mes tirages dans /drawable-V24 Mon émulateur est API 23. Donc, finalement, il ne peut pas le trouver.
la solution était de déplacer tous les tirables dans /drawable folder (no -24).