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>
Solvek
fuente
mira esto, ¡esto me ayuda! stackoverflow.com/questions/9480972/android-tablelayout-error
user1974235

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.

vnportnoy
fuente
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.

Solvek
fuente
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

lujop
fuente
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();
    }
Wildan Muhlis
fuente
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.

MobileEvangelist
fuente
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.

timonel
fuente
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)

Han Heong Ho
fuente
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

hedisam
fuente
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

Lakhwinder Singh Dhillon
fuente
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?

Kevin Coppock
fuente
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).
Julian Honma
fuente
¡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.

Williaan Lopes
fuente
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).

alsaleem
fuente
También tuve el mismo caso.
Rafael
3

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

Emre Aydemir
fuente
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.

marca
fuente
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.

Luan Si Ho
fuente
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ó.

Val Okafor
fuente
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ó!

Jonathan Laliberte
fuente
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.

Michał Powłoka
fuente
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.

ghane nikraftar
fuente
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.

iCantC
fuente
1

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

Eben
fuente
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!

sud007
fuente
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.

Kavya Shravan
fuente
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}
Sam
fuente
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.

mini cristiano
fuente
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

Daniel
fuente
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í.

Muzammil
fuente
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

GGK
fuente