android.view.InflateException: ligne de fichier XML binaire n ° 12: erreur de gonflage de la classe <inconnu>

147

Je reçois de nombreuses erreurs de type affichées dans le sousj. Ces erreurs semblent 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 mise en page. La ligne XML varie également.

Quelqu'un peut-il expliquer pourquoi cette erreur se produit? Et que puis-je 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, mais une telle erreur se produit dans d'autres 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>
Solvek
la source
vérifiez ceci. cela m'aide! stackoverflow.com/questions/9480972/android-tablelayout-error
user1974235

Réponses:

266

L'exception gonflée n'est pas réellement le problème, mais vient vraiment d'un autre problème plus profond dans votre mise en page qui est ensuite enveloppé dans une exception InflateException. Un problème courant est une exception de mémoire insuffisante lors de la tentative de gonflement d'une vue d'image en chargeant une ressource dessinable. Si l'une de ces ressources a une résolution de pixels élevée, cela prendrait beaucoup de mémoire, provoquant alors une exception de gonflement.

Vérifiez donc fondamentalement que la résolution en pixels de vos images dessinables est juste le minimum nécessaire pour votre mise en page.

vnportnoy
la source
4
@vnportnoy J'ai également la même erreur lorsque je supprime l'image
Harin Kaklotar
4
Je crois que je n'ai aucun dessinable dans mon application
Arturas M
3
Essayez de vérifier votre ensemble de langues, il manque probablement une ressource de chaîne. Cela posait un problème dans mon cas.
Mohammed Subhi Sheikh Quroush
Si votre problème concerne les tests d'instrumentation, essayez ceci: stackoverflow.com/q/24904445
Jerry Destremps
Après avoir supprimé l'imageview de mon xml, l'erreur se produit toujours dans le chemin de classe 'com.android.tools.build:gradle:3.0.0-alpha2' et compilez 'com.android.support.constraint: contrainte-layout: 1.0.2'
Subho
24

ViewFlippercharge toutes les images en mémoire pendant le gonflage de la mise en page. Parce que mes images sont grandes, cela prend beaucoup de mémoire, j'ai remplacé ViewFlipperpar ImageSwitcherqui peut changer les images avec une animation comme ViewFlippermais il ne charge qu'une seule image à la fois.

Solvek
la source
23

Cela peut également se produire si vous utilisez une VectorDrawablebibliothèque de support et que vous avez oublié d'utiliser à la app:srcCompatplace deandroid:src

L'erreur exacte est: Ligne de fichier XML binaire #XX: Erreur de gonflage de la classe ImageView

Voir ce lien

lujop
la source
Une fois que vous avez activé cela, vous devez toujours utiliser l'application: srcCompat
Mohamed ALOUANE
Mais cela ne générera pas de crash aléatoire.
Menna-Allah Sami
11

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();
    }
Wildan Muhlis
la source
11

Je sais que la question a déjà reçu une réponse, mais je poste toujours avec la pensée que quelqu'un peut rencontrer ce genre de problème.

Dans mon cas, le problème est que je charge mon application sur le téléphone qui fait référence aux mises en page de res / layout / folder et aux valeurs pour @dimens de res / values ​​/ dimens ici, c'est font_22 auquel il essaie d'accéder et il est défini dans res / values-xlarge / dimens.

Je mets à jour l'interface utilisateur du projet existant.

J'ai rencontré ce problème parce que j'utilise IDE Eclipse où je ctrl + espace pour l'indice tout en écrivant xml pour le dossier de mise en page, il affiche toutes les valeurs des valeurs ainsi que le dossier values-xlarge quel que soit le dossier pour lequel j'écris.

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

J'espère que cela peut aider quelqu'un à rencontrer ce genre de problème stupide.

MobileÉvangéliste
la source
9

J'ai rencontré le même bug et j'ai trouvé que la raison principale est:

Utilisez le contexte d'application pour gonfler la vue.

Le gonflage avec le contexte d'activité a corrigé le bogue.

barreur
la source
6

La taille de ma photo n'est que de 14 Ko mais le problème est que le concepteur m'a donné 1011px x 1819px (résolution trop élevée, d'où InflateException)

Han Heong Ho
la source
6

Au cas où quelqu'un aurait des problèmes similaires, j'ai eu un tel problème en gonflant la vue:

View.inflate(getApplicationContext(), R.layout.my_layout, null)

corrigé en remplaçant getApplicationContext()parthis

hedisam
la source
5

J'ai eu cette erreur car j'ai sélectionné le thème comme thème matériel. Mais comme j'essayais d'exécuter l'application sur 4.4.2, cela a donné cette erreur.

Solution: sélectionnez Theme_holo comme thème

Lakhwinder Singh Dhillon
la source
Mon problème est peut-être similaire au vôtre car je ne vois le crash que sur 4.2.2. Mais où puis-je passer du thème Material à Theme_holo? Je ne vois pas le mot-clé Material dans mon styles.xmlou v21/styles.xml. Voir ma question: stackoverflow.com/questions/37883677/…
Katedral Pillon
4

Ce lien peut vous aider. Essayez de vérifier votre manifeste pour les problèmes. Si vous pouvez faire en sorte que cela se reproduise, publiez l'intégralité de votre trace de pile afin que nous puissions voir quelle est réellement l'erreur.

EDIT: Je suis sûr que vous avez vérifié cela, mais que contient la ligne 12 du fichier XML que vous utilisez pour la mise en page TourActivity?

Kevin Coppock
la source
J'ai lu ce numéro. Ce n'est pas mon cas (du moins je ne peux pas le voir). Ajout de pile à la question.
Solvek
Réponse mise à jour, pouvez-vous publier le XML? Si cela ne vous dérange pas, publiez l'intégralité du XML s'il n'est pas trop volumineux.
Kevin Coppock
Ajout de XML à la question initiale
Solvek
Hmm, malheureusement je n'ai aucune expérience avec l'utilisation de merge ou ViewFlipper ... Est-ce que tous les fichiers XML avec lesquels cela se produit utilisent la fusion ou ViewFlipper?
Kevin Coppock
Non. D'autres fichiers n'ont pas de fusion de flipper mais ont toujours le même problème.
Solvek
4

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

(Dans le message d'erreur du chat du journal, il est indiqué 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 mise en page ne soit gonflée
  2. J'ai exécuté l'application en mode débogage jusqu'à ce qu'elle atteigne ce point d'arrêt 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 pouvant être dessiné en utilisant tools:targetApi="lollipop"(le bogue ne s'est produit que sur les appareils plus anciens).
Julian Honma
la source
Merci! Cela m'a aidé à trouver le problème!
Sergey Stasishin
4

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'utiliser: android:background

Plutôt que: app:srcCompat

dans un fichier SVG.

Dans ton 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 !
 />

Je recommande de l'utiliser de cette façon

ajoutez ceci à votre application build.gradle

android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 }

et

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

Williaan Lopes
la source
3

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

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

La solution était de déplacer tous les drawables vers le dossier / drawable (pas de -24).

alsaleem
la source
J'ai aussi eu le même cas.
Rafael
3

Vous devez copier les fichiers image du dossier «drawable-24» vers le dossier «drawable».

Emre Aydemir
la source
2

J'ai eu la même erreur et j'ai résolu le déplacement de mes drawables du dossier drawable-mdpi vers le dossier drawable. Il m'a fallu un certain temps pour le réaliser car dans Eclipse, tout fonctionnait parfaitement alors que dans Android Studio, j'ai eu ces horribles erreurs d'exécution.

Modifier la note: Si vous migrez d'Eclipse vers Android Studio et que votre projet provient d'Eclipse, cela peut arriver, alors faites attention que dans Android Studio, les choses diffèrent un peu de Eclipse.

marque
la source
2

Dans mon cas, cette erreur se produit lorsque j'utilise le bouton d'action flottant et que je règle android:backgroundTint="#000". Alors ne définissez pas backgroundTintet le problème est résolu. J'espère que cela vous aidera.

Luan Si Ho
la source
Merci c'était en effet le problème dans mon cas. Besoin d'utiliser app:backgroundTintau lieu de android:backgroundTint.
Drago
2

Pour moi, mon problème était que j'étais

android:background="?attr/selectableItemBackground"

Dans un arrière-plan LinearLayout, une fois que je l'ai supprimé, le test a réussi.

Val Okafor
la source
1

J'ai eu ce problème tout à l'heure et j'ai réussi à comprendre ce que c'était. Faisait référence à une couleur dans mes valeurs qui posait des problèmes. Je l'ai donc défini manuellement au lieu d'en utiliser une parmi les suggestions de la liste déroulante, puis cela a fonctionné!

Jonathan Laliberte
la source
1

J'ai eu la même erreur lorsque j'ai exécuté mon application sur l'API lvl 16 (26 était bien). C'est parce que j'ai utilisé ?attrr/colorAccentdans ma forme dessiné:

<?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 remplacer par une couleur régulière a résolu mon problème.

Michał Powłoka
la source
1

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

ghane nikraftar
la source
1

Je sais que ce fil est vieux, mais y répond toujours pour que personne d'autre ne passe des nuits blanches.

J'étais en train de refactoriser 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 res/dimendossier en tant que<dimen name="max_length">500</dimen> .

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

En guise de solution, je devais refaire tous mes changements et conserver toutes ces valeurs comme avant.

TLDR;

étape 1: tout fonctionne bien.

étape 2: pour augmenter ma maintenance, j'ai remplacé android:maxLength = 500par <dimen name="max_length">500</dimen>et android:maxLength = @dimen/max_length, c'est là que tout s'est mal passé (crash avecInflateException ).

étape 3: tout tourne mal

étape 4: refaire tout mon travail en remplaçant à nouveau android:maxLength = @dimen/max_lengthparandroid:maxLength = 500 Refaites .Tout a été corrigé.

Étape 5: Tout fonctionne bien.

iCantC
la source
1

Résolu le problème en déplaçant tous mes éléments dessinables de drawable-v24 à drawable

Eben
la source
0

J'ai également rencontré un problème similaire. Alors que pour tout le monde, cela peut être un problème de diverses mauvaises utilisations dans le code telles que

  1. Balise de mise en page incorrecte dans XML
  2. Chargement de ressources lourdes directement dans ImageView résultant en MOO
  3. Problèmes d'utilisation des styles.

Un des facteurs les plus ignorés peut être l' utilisation d'un contexte correct tout en gonflant les vues. Veuillez vérifier que vous n'utilisez pas ApplicationContext lorsqu'un contexte d'activité est requis. Alors que, ApplicationContext ne finisse pas toujours par une erreur, mais en fonction de votre hiérarchie de vues, cela peut être crucial.

J'ai résolu mon problème avec un contexte MAUVAIS (en utilisant ApplicationContext au lieu d' Activité en 4 jours! Alors essayez si cela résout. Bon Codage !!

sud007
la source
0

J'avais rencontré le même problème, j'avais utilisé la balise de vue en XML au lieu de View. Le remplacement de la classe View a résolu le problème.

J'espère que cela vous aidera aussi.

Kavya Shravan
la source
0

Nous devons vérifier la version de l'API. J'avais l'habitude de donner une couleur de fond à mes LinearLayoutgoûts

<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.xmldans le drawabledossier

<?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 que l'API pose un problème, nous devons donc vérifier le niveau de l'API s'il est au-dessus de l'API 24 afin que nous puissions utiliser la façon dont nous aimons. Mais s'il est inférieur à 24, nous devons éviter l'utilisation, les juts donnent une couleur normale ou une couleur non mélangée avec un dégradé de couleurs.

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

donnez un identifiant à vos présentations linéaires et définissez des arrière-plans si ça va

 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}
Sam
la source
0

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

mini chrétien
la source
0

Pour moi, cela s'est produit parce que j'ai essayé de mélanger des images graphiques vectorielles xml avec des png ordinaires dans le même fichier de mise en page,

seulement après avoir remplacé les graphiques vectoriels xml par des png, cela a commencé à fonctionner

Daniel
la source
0
  • Je viens de résoudre ce problème, supprimez simplement vos images de drawable (v24) et collez-les simplement dans un dossier drawable, cela fonctionne pour moi.

Muzammil
la source
0

J'ai eu la même erreur dans Crashlyticsun appareil étrange: Motorola One Vision Android 5.1 et 20 Go de RAM (gratuit), enraciné Cet appareil est livré à l'origine avec Android 9.0, 4 Go de RAM

Quelqu'un essaie probablement de pirater l'application que je développe actuellement et a des problèmes avec les multi-APK. Donc, les drawables ne peuvent pas être trouvés et l'application livre le crash

GGK
la source