web-dev-qa-db-fra.com

android.view.InflateException: Ligne de fichier XML binaire n ° 12: Erreur lors de l'influx de la classe <inconnu>

Je reçois beaucoup d'erreurs de genre affichées dans le sujet. 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 présentation. 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?

Empiler 

=============================================================

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, cependant une telle erreur se produit dans d’autres fichiers XML

<?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>
123
Solvek

L’exception «gonfler» n’est pas le problème, mais bien un autre problème plus profond de votre mise en page, qui est ensuite encapsulé dans une exception InflateException . Si l'une de ces ressources présente une résolution en pixels élevée, cela nécessiterait beaucoup de mémoire, ce qui causerait une exception de gonflement.

Donc, fondamentalement, vérifiez que la résolution en pixels de vos images pouvant être dessinées ne représente que le minimum nécessaire pour votre mise en page.

243
vnportnoy

ViewFlipper charge toutes les images en mémoire pendant le gonflage de la mise en page. Comme mes images sont volumineuses, cela prend beaucoup de mémoire, j'ai remplacé ViewFlipper par ImageSwitcher qui peut changer les images avec une animation de type ViewFlipper, mais elle ne charge qu'une image à la fois.

24
Solvek

Cela peut aussi arriver si vous utilisez une VectorDrawable en utilisant la bibliothèque de support et que vous avez oublié d'utiliser app:srcCompat au lieu de Android:src

L’erreur exacte est: Ligne de fichier XML binaire #XX: erreur lors du gonflage de la classe ImageView

Voir ce lien

18
lujop

Je sais que la question a déjà reçu une réponse, mais je continue de poster en pensant que quelqu'un pourrait rencontrer ce genre de problème.

Dans mon cas, le problème est que je charge mon application sur un téléphone qui fait référence aux dispositions de res/layout/folder et aux valeurs pour @dimens à partir de res/values ​​/ dimens./dimens.

En fait, je mets à jour l'interface utilisateur du projet existant.

J'ai rencontré ce problème car j'utilise IDE Eclipse, où je ctrl + espace pour le conseil lors de l'écriture de XML pour le dossier de présentation. l'écriture.

Je sais aussi que les valeurs dans les deux fichiers doivent être identiques à mappées pour différents écrans.

J'espère que cela aidera quelqu'un à rencontrer ce genre de problème idiot.

9
MobileEvangelist

La même erreur s'est produite lors de la création d'une vue personnalisée avec un seul constructeur. Essayez de définir tout le constructeur de 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();
    }
7
Wildan Muhlis

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, ce qui a causé l'inflateException)

5
Han Heong Ho

J'ai eu cette erreur parce que j'ai choisi le thème comme thème Matériau. Mais comme j'essayais de lancer l'application sur 4.4.2, cette erreur s'est produite.

Solution: sélectionnez Theme_holo comme thème

Ce lien peut vous aider. Essayez de vérifier votre manifeste pour des problèmes. Si vous pouvez le faire se reproduire, envoyez votre trace de pile entière afin que nous puissions voir quelle est l'erreur.

EDIT: Je suis sûr que vous avez vérifié cela, mais que se passe-t-il à la ligne 12 du fichier XML que vous utilisez pour la présentation TourActivity?

4
kcoppock

J'ai rencontré le même bogue et trouvé que la raison principale était:

Utilisez le contexte d'application pour gonfler la vue.

Gonfler avec l'activité Le contexte a corrigé le bogue.

4
cox

Pour moi, le message d'erreur était en réalité insuffisant dans le journal du chat, alors voici ce que j'ai fait pour déterminer la cause du problème:

(Dans le message d'erreur du journal du chat, il était indiqué que l'erreur s'était produite lors du gonflement d'une présentation spécifique dans mon HomeFragment.Java) 

  1. Je mets un point d'arrêt juste avant que la disposition ne soit gonflée
  2. J'ai exécuté l'application en mode débogage jusqu'à atteindre ce point d'arrêt spécifique
  3. J'ai sélectionné la ligne avec mon curseur et j'ai lancé 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
Julian Honma

J'ai eu la même erreur et j'ai résolu de déplacer mes drawables du dossier drawable-mdpi vers le dossier drawable. Il m’a fallu un peu de temps pour comprendre, car dans Eclipse tout fonctionnait parfaitement, alors que dans Android Studio, j’avais ces erreurs d’affichage laides.

Note de modification: Si vous migrez d’Eclipse vers Android Studio et que votre projet provient d’Eclipse, il se peut que cela se produise. Veillez donc à ce que les choses diffèrent légèrement d’Eclipse dans Android Studio.

2
Mark

Je sais que c'est une question à réponse, mais je ne vois pas la cause à laquelle j'ai fait face.

C'est qu'Android Studio a placé mes dessins dans /drawable-V24Mon émulateur est l'API 23. Donc, finalement, il ne peut pas le trouver.

La solution consistait à déplacer tous les fichiers pouvant être dessinés vers/le dossier pouvant être dessiné (no -24).

1
alsaleem

Je sais que ce fil est vieux, mais je le réponds toujours pour que personne ne passe de nuits blanches.

Je refactais un ancien projet dont les fichiers de mise en page contenaient tous des attributs codés en dur tels que Android:maxLength = 500. J'ai donc décidé de l'enregistrer dans mon fichier res/dimen sous le nom <dimen name="max_length">500</dimen>.

Fini la refactorisation de près de 30 fichiers de mise en page avec ma valeur de vente. Devine quoi? la prochaine fois que j'ai exécuté mon projet, il a commencé à lancer le même InflateException.

En guise de solution, je devais refaire toutes mes modifications et conserver toutes ces valeurs comme auparavant.

TLDR;

étape 1: Tout va bien.

étape 2: Pour améliorer ma maintenance, j'ai remplacé Android:maxLength = 500 par <dimen name="max_length">500</dimen> et Android:maxLength = @dimen/max_length, c'est là que tout s'est mal passé (crash avec InflateException).

étape 3: tout va mal

étape 4: Refait tout mon travail en remplaçant à nouveau Android:maxLength = @dimen/max_length par Android:maxLength = 500.

étape 5: Tout va bien.

1
iCantC

Vous devez copier les fichiers image du dossier "drawable-24" dans le dossier "drawable".

1
Emre Aydemir

Dans mon cas, cette erreur se produit lorsque j'utilise le bouton Action flottante et que je définit Android:backgroundTint="#000". Alors, ne définissez pas simplement backgroundTint et le problème résolu . J'espère que cela vous aidera.

1
Luan Si Ho

J'ai eu ce problème tout à l'heure et j'ai réussi à comprendre ce que c'était. Faire référence à une couleur dans mes valeurs qui posait problème Ainsi défini manuellement au lieu d'utiliser l'un des suggestions de la liste déroulante. Puis cela a fonctionné! 

1

J'ai eu la même erreur lorsque j'ai lancé mon application sur l'API Niv 16 (26 c'était bien). C'est parce que j'ai utilisé ?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>

Remplacer cela par une couleur régulière a résolu mon problème.

1
Michał Powłoka

j'ai eu le même problème et il a résolu en supprimant drawable-v24 avec (24) devant les images dans le dossier extractible et en les remplaçant par des éléments ordinaires.

0
ghane nikraftar

J'ai trouvé la même erreur et il a fallu deux jours pour identifier la nature de l'erreur.

L'erreur était simplement parce que j'essayais d'en utiliser un: Android:background

Plutôt que: app:srcCompat

dans un fichier SVG.

Dans votre cas, je crois que c'est ça

<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 ça aide.

0
Williaan Lopes

Dans mon cas, je dois spécifier le nom de package complet du composant d'interface utilisateur de bibliothèque que j'utilise dans mon fichier de présentation.

0
christian mini

Nous devons vérifier la version de l'API. J'avais l'habitude de donner une couleur de fond à ma LinearLayout comme 

<LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:background="@drawable/as_royalblue"
        Android:orientation="vertical"></LinearLayout>

bien sûr j'ai eu la même erreur, as_royalblue.xml à l'intérieur du dossier 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 corrigé , en fait, cela semble être un problème d'API. Nous devons donc vérifier le niveau de l'API s'il est supérieur à API 24 pour pouvoir utiliser la méthode qui nous convient. Mais si elle est inférieure à 24 ans, nous devons éviter toute utilisation. Les saillies donnent une couleur normale ou une couleur mélangée non dégradée.

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

donnez id à vos linéarisations et définissez des arrière-plans 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}
0
Sam

J'ai également fait face à un problème similaire. Bien que cela puisse concerner tout le monde, cela peut être dû à divers mauvais usages dans Code, tels que

  1. Mauvaise balise de mise en page en XML
  2. Chargement de ressources lourdes directement dans ImageView, résultant en OOM
  3. Problèmes d'utilisation des styles.

Un facteur le plus ignoré peut être l'utilisation du contexte correct lors de l'inflation de vues. Vérifiez que vous n'utilisez pas ApplicationContext lorsqu'un contexte d'activité est requis. Bien que ApplicationContext puisse ne pas toujours se retrouver en erreur, mais en fonction de la hiérarchie de vos vues, il peut s'avérer crucial.

J'ai résolu mon problème avec un contexte BAD (en utilisant ApplicationContext au lieu de Activité en 4 jours! Essayez donc si cela résout. Codage heureux !!

0
sud007

Pour moi, c’est parce que j’ai essayé de mélanger des images vectorielles xml avec des png ordinaires dans le même fichier

seulement après avoir remplacé les graphiques vectoriels xml avec pngs, il a commencé à fonctionner

0
Daniel

J'avais fait face au même problème, j'avais utilisé view tag in XML au lieu de View. Le remplacement de la classe View a résolu le problème. 

J'espère que ça vous aidera aussi ..

0
Kavya Shravan