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>
116
demandé sur Mark Adler 2010-12-22 22:35:51

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.

235
répondu vnportnoy 2014-04-26 21:47:33

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.

24
répondu Solvek 2016-03-03 21:21:30

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

voir ce lien

16
répondu lujop 2016-06-09 14:07:41

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.

9
répondu MobileEvangelist 2017-05-03 12:03:39

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)

5
répondu Han Heong Ho 2016-11-02 12:34:13

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();
    }
5
répondu Wildan Muhlis 2017-02-21 01:50:12

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?

4
répondu kcoppock 2017-05-23 12:02:59

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.

4
répondu cox 2015-09-09 04:08:26

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

4
répondu Lakhwinder Singh Dhillon 2015-11-03 18:56:24

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)

  1. j'ai mis un point d'arrêt juste avant que la disposition a été gonflée
  2. j'ai lancé l'application en mode debug jusqu'à ce qu'elle atteigne ce point de rupture spécifique
  3. j'ai sélectionné la ligne avec mon curseur et j'ai couru Evaluate expression dessus:
    • Run > Evaluate Expression ou alt - F8
  4. 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).
3
répondu Julian Honma 2017-10-09 12:05:14

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

3
répondu hedisam 2018-03-31 15:05:16

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.

2
répondu Mark 2016-11-03 20:24:23

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é!

1
répondu Jonathan Laliberte 2017-05-20 19:08:36

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.

1
répondu Luan Si Ho 2017-07-05 13:00:10

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.

0
répondu Williaan Lopes 2018-02-25 20:19:11

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

  1. étiquette de mise en page erronée en XML
  2. chargement de ressources lourdes directement dans ImageView résultant en OOM
  3. 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!!

0
répondu sud007 2018-05-04 10:48:08

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..

0
répondu Kavya Shravan 2018-07-23 06:55:40

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}
0
répondu Sam 2018-08-24 14:12:55

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).

0
répondu alsaleem 2018-09-24 16:24:37