android.view.InflateException: línea de archivo XML binario # 12: error al inflar la clase <unknown>


147

Recibo muchos errores del tipo que se muestran en el subj. Estos errores parecen ser ocasionales y no puedo reproducirlos. De la pila puedo aprender que tal error puede ocurrir para mis diferentes recursos de diseño. La línea de XML también varía.

¿Alguien puede explicar por qué ocurre este error? ¿Y qué puedo hacer para solucionar este problema?

Apilar

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

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)

Aquí hay un resultado de XML, sin embargo, dicho error ocurre en otros xmls

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

Respuestas:


266

La excepción de inflado no es realmente el problema, pero realmente proviene de otro problema más profundo en su diseño que luego se envuelve en una InflateException. Un problema común es una excepción de falta de memoria al intentar inflar una vista de imagen cargando un recurso dibujable. Si uno de estos recursos tiene una alta resolución de píxeles, se necesitaría mucha memoria, lo que provocaría una excepción de inflado.

Básicamente, verifique que la resolución de píxeles en sus imágenes dibujables sea la mínima necesaria para su diseño.


44
@vnportnoy También tengo el mismo error cuando
elimino la

44
Creo que no tengo elementos dibujables en mi aplicación
Arturas M

3
Intente verificar su paquete de idiomas, probablemente falta un recurso de cadena. Esto estaba causando un problema en mi caso.
Mohammed Subhi Sheikh Quroush

Si su problema es con las pruebas de instrumentación, intente esto: stackoverflow.com/q/24904445
Jerry Destremps

Después de eliminar la vista de imagen de mi xml, el error ocurre en classpath 'com.android.tools.build:gradle:3.0.0-alpha2' y compila 'com.android.support.constraint: restrict-layout: 1.0.2'
Subho

24

ViewFlippercarga todas las imágenes en la memoria durante el inflado del diseño. Debido a que mis imágenes son grandes, requiere mucha memoria, reemplacé ViewFlippercon las ImageSwitchercuales puedo cambiar las imágenes con animación, ViewFlipperpero carga solo una imagen a la vez.


23

Esto también puede suceder si usa una VectorDrawablebiblioteca de soporte de uso y olvidó usarla en app:srcCompatlugar deandroid:src

El error exacto es: línea de archivo XML binario #XX: error al inflar la clase ImageView

Ver ese enlace


Una vez que active eso, siempre debe usar la aplicación: srcCompat
Mohamed ALOUANE

Pero esto no generará un bloqueo aleatorio.
Menna-Allah Sami

11

Tuve el mismo error al crear una vista personalizada con un solo constructor, intente definir todo el constructor para sus vistas personalizadas.

   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();
    }

11

Sé que la pregunta ya está respondida, pero todavía estoy publicando con la idea de que alguien puede tener este tipo de problema.

En mi caso, el problema es que estoy cargando mi aplicación al teléfono que hace referencia a diseños de res / layout / folder y valores para @dimens de res / values ​​/ dimens aquí es font_22 al que está intentando acceder y está definido en res / values-xlarge / dimens.

De hecho, estoy actualizando la interfaz de usuario del proyecto existente.

Me encontré con este problema porque estoy usando IDE Eclipse donde ctrl + espacio para pista mientras escribo xml para la carpeta de diseño, muestra todos los valores de los valores, así como la carpeta de valores-xlarge, independientemente de para qué carpeta estoy escribiendo.

También sé que los valores en ambos archivos deben ser los mismos que los mapeados para diferentes pantallas.

Espero que esto pueda ayudar a alguien a encontrarse con este tipo de problema tonto.


9

Encontré el mismo error y encontré que la razón raíz es:

Use el contexto de la aplicación para inflar la vista.

Inflar con el contexto de actividad solucionó el error.


6

El tamaño de mi imagen es de solo 14Kb, pero el problema es que el diseñador me dio 1011px x 1819px (la resolución es demasiado alta, lo que provoca la InflateException)


6

En caso de que alguien tenga problemas similares, tuve un problema al inflar la vista:

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

arreglado reemplazando getApplicationContext()conthis


5

Tuve este error porque seleccioné el tema como tema Material. Pero cuando estaba tratando de ejecutar la aplicación en 4.4.2 me dio este error.

Solución: seleccione Theme_holo como tema


Mi problema puede ser similar al tuyo ya que solo veo el bloqueo 4.2.2. Pero, ¿dónde cambio del tema Material a Theme_holo? No veo la palabra clave Material en mi styles.xmlo v21/styles.xml. Vea mi pregunta: stackoverflow.com/questions/37883677/…
Katedral Pillon

4

Este enlace puede ayudarte. Intente revisar su manifiesto en busca de problemas. Si puede lograr que vuelva a suceder, publique todo el seguimiento de la pila para que podamos ver cuál es realmente el error.

EDITAR: estoy seguro de que ha verificado esto, pero ¿qué hay en la línea 12 del archivo XML que usa para el diseño TourActivity?


He leído este problema Este no es mi caso (al menos no puedo verlo). Añadiendo stack a la pregunta.
Solvek

Respuesta actualizada, ¿puedes publicar el XML? Si no le importa, publique la totalidad del XML si no es demasiado grande.
Kevin Coppock

XML agregado a la pregunta inicial
Solvek

Hmm, desafortunadamente no tengo experiencia con el uso de merge o ViewFlipper ... ¿Todos los archivos XML que esto sucede con use merge o ViewFlipper?
Kevin Coppock

No. Otros archivos no tienen fusión de flipper pero aún tienen el mismo problema.
Solvek

4

Para mí, el mensaje de error era en realidad insuficiente en el log cat, así que esto es lo que hice para descubrir qué causó el problema:

(En el mensaje de error de log cat, decía que el error se produjo al inflar un diseño específico en mi HomeFragment.java)

  1. Puse un punto de interrupción justo antes de inflar el diseño
  2. Ejecuté la aplicación en modo de depuración hasta que alcanzó ese punto de interrupción específico
  3. Seleccioné la línea con mi cursor y corrí Evaluate expressionsobre ella:
    • Run > Evaluate Expression o alt - F8
  4. El resultado me mostró más información sobre el origen del problema, que en mi caso era un archivo que se podía dibujar tools:targetApi="lollipop"(el error solo se produjo en dispositivos más antiguos).

¡Gracias! ¡Esto me ayudó a encontrar el problema!
Sergey Stasishin

4

Encontré el mismo error y tardé dos días en identificar cuál fue el error.

El error fue simplemente porque estaba tratando de usar: android:background

Más bien que: app:srcCompat

en un archivo SVG

En su caso, creo que esto es todo.

<ImageView 
    android:scaleType="fitXY" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:src="@drawable/tour_11"      <-- the error is here !
 />

Recomiendo usarlo de esta manera

agregue esto a su aplicación build.gradle

android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 }

y

<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"
     />

Espero que esto ayude.


3

Sé que es una pregunta respondida, pero no veo la causa que enfrenté.

Fue que Android Studio colocó mis dibujables en / drawable-V24 Mi emulador es API 23. Entonces, eventualmente no lo puedo encontrar.

La solución fue mover todos los elementos dibujables a la carpeta / drawable (no -24).


También tuve el mismo caso.
Rafael

3

Debe copiar los archivos de imagen de la carpeta "drawable-24" a la carpeta "drawable".


2

Tuve el mismo error y resolví mover mis dibujos de la carpeta drawable-mdpi a la carpeta drawable. Me tomó algo de tiempo darme cuenta porque en Eclipse todo funcionó a la perfección, mientras que en Android Studio recibí estos feos errores de tiempo de ejecución.

Nota de edición: si está migrando de eclipse a Android Studio y su proyecto proviene de eclipse, puede suceder, así que tenga cuidado de que en Android Studio las cosas difieran un poco de eclipse.


2

En mi caso, este error ocurre cuando uso el botón de acción flotante y lo configuro android:backgroundTint="#000". Entonces simplemente no establezca backgroundTinty resuelva el problema. Espero que sea útil para ti.


Gracias, ese fue el problema en mi caso. Necesito usar en app:backgroundTintlugar de android:backgroundTint.
Drago

2

Para mí, mi problema era que estaba

android:background="?attr/selectableItemBackground"

Para un fondo LinearLayout, una vez que lo eliminé, la prueba pasó.


1

Tuve este problema en este momento y logré descubrir qué era. Estaba haciendo referencia a un color en mis valores que estaba causando problemas. Lo definí manualmente en lugar de usar uno de las sugerencias desplegables. ¡Entonces funcionó!


1

Tuve el mismo error cuando ejecuté mi aplicación en API lvl 16 (26 estaba bien). Fue porque usé ?attrr/colorAccenten mi forma dibujable:

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

Reemplazar eso con un color regular solucionó mi problema.


1

Tuve el mismo problema y lo resolví eliminando drawable-v24 con (24) delante de las imágenes en la carpeta dibujable y reemplazándolas con elementos dibujables normales.


1

Sé que este hilo es viejo, pero aún lo responde para que nadie más deba pasar noches sin dormir.

Estaba refactorizando un proyecto antiguo, cuyos archivos de diseño contenían atributos codificados como android:maxLength = 500. Así que decidí registrarlo en mi res/dimenarchivo como <dimen name="max_length">500</dimen>.

Terminé de refactorizar casi 30 archivos de diseño con mi res-value. ¿Adivina qué? la próxima vez que ejecuté mi proyecto, comenzó a arrojar lo mismo InflateException.

Como solución, necesitaba rehacer todos mis cambios y mantener todos esos valores igual que antes.

TLDR;

Paso 1: Todo funciona bien.

Paso 2: Para aumentar mi mantenimiento He sustituido android:maxLength = 500con <dimen name="max_length">500</dimen>y android:maxLength = @dimen/max_length, ahí es donde todo salió mal (chocar con InflateException).

Paso 3: todo funciona mal

Paso 4: Vuelva a hacer todo mi trabajo reemplazándolo nuevamente android:maxLength = @dimen/max_lengthpor. android:maxLength = 500Todo se solucionó.

Paso 5: Todo funciona bien.


1

Lo resolví moviendo todos mis elementos dibujables de drawable-v24 a drawable


0

También me enfrenté a un problema similar. Mientras que para cualquiera, esto puede ser un problema de varios malos usos en el Código, como

  1. Etiqueta de diseño incorrecta en XML
  2. Carga de recursos pesados ​​directamente en ImageView que resulta en OOM
  3. Problemas con el uso de estilos.

Uno de los factores más ignorados puede ser el uso del contexto correcto al inflar vistas. Compruebe que no está utilizando ApplicationContext cuando se requiere un contexto de actividad. Mientras, ApplicationContext puede no terminar siempre en un error, pero dependiendo de su jerarquía de vistas puede ser crucial.

¡Resolví mi problema con un contexto MALO (usando ApplicationContext en lugar de Activity en un lapso de 4 días! Así que intente si eso resuelve. ¡Feliz codificación!


0

Me había enfrentado al mismo problema, había usado la etiqueta de vista en xml en lugar de Vista. Reemplazar para ver la clase solucionó el problema.

Espero que te ayude también.


0

Necesitamos verificar la versión de la API. Solía ​​dar color de fondo a mi LinearLayoutgusto

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

seguro tuve el mismo error, as_royalblue.xmldentro de la drawablecarpeta

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

y cómo lo solucioné , en realidad parece un problema de Api, por lo que debemos verificar el nivel de la API si está por encima de API 24 para poder usar de la manera que nos gusta. Pero si es menor de 24 años, debemos evitar el uso, las juts dan un color normal o un color no mezclado de color gradual.

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

dar identificación a sus lineales y establecer fondos si está bien

 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

En mi caso, debo especificar el nombre completo del paquete del componente de la interfaz de usuario de la biblioteca que uso en mi archivo de diseño.


0

Para mí sucedió porque intenté mezclar imágenes de gráficos vectoriales XML con PNG ordinario en el mismo archivo de diseño,

solo después de reemplazar los gráficos vectoriales xml con png comenzó a funcionar


0
  • Solo resuelvo este problema, simplemente elimino sus imágenes de drawable (v24) y solo pegue en la carpeta de drawable, esto funciona para mí.


0

Tuve el mismo error en Crashlyticsun dispositivo extraño: Motorola One Vision Android 5.1 y 20 GB (gratis) de RAM, rooteado Este dispositivo viene originalmente con Android 9.0, 4 GB de RAM

Probablemente alguien está tratando de hackear la aplicación que estoy desarrollando actualmente y tiene problemas para lidiar con múltiples APK. Entonces no se pueden encontrar elementos dibujables y la aplicación genera el bloqueo

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.