39 votes

Android: Comment retrouver l'origine d'une exception InflateException?

Lors du démarrage de mon application, j'obtiens le message d'avertissement suivant dans le Logcat:

04-09 10:28:17.830: WARN/WindowManager(52): Exception when adding starting window
04-09 10:28:17.830: WARN/WindowManager(52): android.view.InflateException: Binary XML file line #24: Error inflating class <unknown>
04-09 10:28:17.830: WARN/WindowManager(52):     at android.view.LayoutInflater.createView(LayoutInflater.java:513)
04-09 10:28:17.830: WARN/WindowManager(52):     at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
04-09 10:28:17.830: WARN/WindowManager(52):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
04-09 10:28:17.830: WARN/WindowManager(52):     at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
04-09 10:28:17.830: WARN/WindowManager(52):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
04-09 10:28:17.830: WARN/WindowManager(52):     at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
04-09 10:28:17.830: WARN/WindowManager(52):     at com.android.internal.policy.impl.PhoneWindow.generateLayout(PhoneWindow.java:2153)
04-09 10:28:17.830: WARN/WindowManager(52):     at com.android.internal.policy.impl.PhoneWindow.installDecor(PhoneWindow.java:2207)
04-09 10:28:17.830: WARN/WindowManager(52):     at com.android.internal.policy.impl.PhoneWindow.getDecorView(PhoneWindow.java:1395)
04-09 10:28:17.830: WARN/WindowManager(52):     at com.android.internal.policy.impl.PhoneWindowManager.addStartingWindow(PhoneWindowManager.java:818)
04-09 10:28:17.830: WARN/WindowManager(52):     at com.android.server.WindowManagerService$H.handleMessage(WindowManagerService.java:8794)
04-09 10:28:17.830: WARN/WindowManager(52):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-09 10:28:17.830: WARN/WindowManager(52):     at android.os.Looper.loop(Looper.java:123)
04-09 10:28:17.830: WARN/WindowManager(52):     at com.android.server.WindowManagerService$WMThread.run(WindowManagerService.java:531)
04-09 10:28:17.830: WARN/WindowManager(52): Caused by: java.lang.reflect.InvocationTargetException
04-09 10:28:17.830: WARN/WindowManager(52):     at android.widget.FrameLayout.<init>(FrameLayout.java:79)
04-09 10:28:17.830: WARN/WindowManager(52):     at java.lang.reflect.Constructor.constructNative(Native Method)
04-09 10:28:17.830: WARN/WindowManager(52):     at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
04-09 10:28:17.830: WARN/WindowManager(52):     at android.view.LayoutInflater.createView(LayoutInflater.java:500)
04-09 10:28:17.830: WARN/WindowManager(52):     ... 13 more
04-09 10:28:17.830: WARN/WindowManager(52): Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x1010059 a=-1}
04-09 10:28:17.830: WARN/WindowManager(52):     at android.content.res.Resources.loadDrawable(Resources.java:1677)
04-09 10:28:17.830: WARN/WindowManager(52):     at android.content.res.TypedArray.getDrawable(TypedArray.java:548)
04-09 10:28:17.830: WARN/WindowManager(52):     at android.widget.FrameLayout.<init>(FrameLayout.java:91)
04-09 10:28:17.830: WARN/WindowManager(52):     ... 17 more

Mon Application commence par la suite à l'écran de démarrage:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:windowBackground="@color/white" android:background="@color/white"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:foregroundGravity="center">

    <ImageView android:id="@+id/ImageView01"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:adjustViewBounds="true" android:scaleType="centerInside"
        android:src="@drawable/splash" android:layout_gravity="center" />


</ScrollView>

Splash est l'image qui est affiché dans l'écran de démarrage. J'ai ces quatre dossiers pour stocker un drawable dans mon application:

/res/drawable-hdpi
/res/drawable-ldpi
/res/drawable-mdpi
/res/drawable-nodpi

le démarrage de l'image a sa propre version dans les trois premiers d'entre eux et est correctement affiché. Suppression de la propriété src de l'ImageView supprime l'image mais pas l'exception.

Je suis un peu perdu avec où chercher la cause de l'exception. Je ne sais même pas si c'est vraiment un problème dans ce fichier de mise en page etc.

Comment feriez-vous pour trouver la cause de cet avertissement?

53voto

Garrett Points 466

J'ai eu la même erreur exacte. La seule ligne XML 24 qui ait du sens était mon manifeste d’application, qui était la balise de fermeture de l’application. Je l'ai tracé jusqu'à mon thème personnalisé que j'avais ajouté pour l'application - je ne définissais pas le parent du style. Tout ce que j'avais à faire, c'était d'ajouter parent = "android: Theme" à mon style et mon erreur a disparu.

 <style name="MyTheme" parent="android:Theme">
...
</style>
 

3voto

Eng.Fouad Points 44085

J'ai eu le même problème, et c'est parce que j'ai transmis le contexte de l'application au lieu du contexte de l'activité.

1voto

Jim Blackler Points 14306
 04-09 10:28:17.830: WARN/WindowManager(52): Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x1010059 a=-1
 

Cette ligne est le cadeau. Le système n’est pas satisfait de l’une de vos ressources, probablement une ressource «src», probablement android:src="@drawable/splash" .

1voto

Nada Points 19

J'ai eu une erreur similaire lors de l'exécution sur un émulateur 2.0. J'ai utilisé une version plus récente de l'API (version 7, 2.1-update1) et cela a fonctionné.

0voto

Steve Haley Points 26928

L'erreur est à la ligne 24 de votre fichier XML. Que contient cette ligne? À l'apparence du message d'erreur

 android.view.InflateException: Binary XML file line #24: Error inflating class <unknown>
 

vous utilisez une classe personnalisée et n'avez pas défini quelque chose correctement. Par exemple, avez-vous défini le nom du package correctement? Peut-être que son constructeur n'est pas formaté? Il faudrait voir le fichier XML, en particulier la ligne 24, pour pouvoir donner plus d’informations.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X