Lors du démarrage de mon application, je reçois l'avertissement suivant dans Logcat:Android: Comment retrouver l'origine d'une InflateException?
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 l'écran de démarrage suivant:
<?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ée dans l'écran de démarrage. J'ai ces quatre dossiers avec pour stocker dessinables dans mon application:
/res/drawable-hdpi
/res/drawable-LDPI
/res/drawable-mdpi
/res/drawable-nodpi
l'image de démarrage a sa propre version dans les trois premiers d'entre eux et est affichée correctement. La suppression de la propriété src à partir d'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 disposition, etc.
Comment allez-vous trouver la cause de cet avertissement?
Eh bien, chercher un fichier qui a 24 lignes 'ligne de fichier XML # 24' – Pentium10
Presque tous mes fichiers de mise en page sont plus longs que 24 lignes. – Janusz
J'ai rencontré un problème similaire lors de la définition d'un nondrawable (dimention dans mon cas) sur un attribut de style qui attendait un drawable. Je m'attendrais à ce que le constructeur (XML sanitiser?) Vous avertisse avant qu'une construction se produise. – Diederik