Android: ¿cómo rastrear el origen de una InflateException?

Al iniciar mi aplicación, recibo la siguiente advertencia en 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  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.(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.(FrameLayout.java:91) 04-09 10:28:17.830: WARN/WindowManager(52): ... 17 more 

Mi aplicación comienza con la siguiente pantalla de inicio:

     

Splash es la imagen que se muestra en la pantalla de inicio. Tengo esas cuatro carpetas con para almacenar drawables en mi aplicación:

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

la imagen de bienvenida tiene su propia versión en los primeros tres y se muestra correctamente. La eliminación de la propiedad src de ImageView elimina la imagen pero no la excepción.

Estoy un poco perdido con respecto a dónde buscar la causa de la excepción. Incluso no sé si esto es realmente un problema en este archivo de diseño, etc.

¿Cómo vas a encontrar la causa de esta advertencia?

Tuve el mismo error exacto. La única línea xml 24 que tenía sentido era el manifiesto de mi aplicación, que era la etiqueta de cierre de la aplicación. Lo remonté a mi tema personalizado que estaba agregando para la aplicación: no estaba definiendo el elemento principal del estilo. Todo lo que tenía que hacer era agregar parent = “android: Theme” a mi estilo y mi error desapareció.

  

Tuve el mismo problema, y ​​fue porque pasé el contexto de la aplicación en lugar del contexto de la actividad.

 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 

Esa línea es el regalo. El sistema no está satisfecho con uno de sus recursos, probablemente un recurso ‘src’, probablemente android:src="@drawable/splash" .

Obtuve un error similar al ejecutar en un emulador 2.0. Usé una versión más nueva de la API (versión 7, 2.1-actualización1) y funcionó.

El error está en la línea 24 de su archivo XML. ¿Qué contiene esa línea? Por la apariencia del mensaje de error

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

estás usando una clase personalizada y no has definido algo correctamente. Por ejemplo, ¿definió el nombre del paquete correctamente? Tal vez su constructor no está formateado? Tendríamos que ver el archivo XML, específicamente lo que está alrededor de la línea 24, para poder brindar más información.

Sé que esto es un poco tarde, pero pasé todo el día tratando de resolver esto y, finalmente, con la ayuda de esta pregunta SO, me di cuenta de que un archivo XML en el ejemplo que estaba probando estaba usando una función de una API posterior y Lint wasn. ‘t atrapando porque el archivo no ha cambiado. Tan pronto como hice una edición aleatoria en el archivo XML y guardé el archivo, apareció el error sobre una API posterior.

Después de tantas investigaciones ajetreadas para encontrar la respuesta de por qué la aplicación está fallando y por qué no muestra el logcat

Acabo de reemplazar esto

 android:configChanges="orientation|keyboardHidden" 

a

 android:configChanges="keyboardHidden|orientation|screenSize" 

en la etiqueta de actividad.