android.view.InflateException: file XML binary línea # 32: file XML binary línea # 32: class de inflado de error

Actualmente estoy enfrentando un problema en mi aplicación, he buscado y probado muchas soluciones, pero no he podido encontrar ninguna que realmente funcione.

Tengo una actividad que contiene una list de componentes personalizados. Estos componentes son elementos CardView de Android envueltos en LinearLayout.

Cada uno de estos componentes de la tarjeta contiene un layout Relativo que está vacío de forma pnetworkingeterminada.

Al llamar al componente en el file XML de actividades, agrego la app:partLayout="@layout/choice_access_part" attributes personalizada app:partLayout="@layout/choice_access_part" . Este atributo se procesa en mi código de componente. Después de eso, infló el layout pasado como reference en el atributo de partLayout add Intento agregarlo a RelativeLayout en mi componente.

 val inflatedLayout: View = inflater.inflate(partLayout, selectionContainer, false) selectionContainer.addView(inflatedLayout) 

No tengo problemas para comstackr la aplicación y ejecutarla hasta que llegue a esta parte del código y get el error: android.view.InflateException: Binary XML file line #32: Binary XML file line #32: Error inflating class

Código de componente

 class MultipleChoiceCard(context: Context?, attrs: AttributeSet?) : CardView(context, attrs) { val title: TextView val nonMandatoryText: TextView val selectionContainer: RelativeLayout init { val inflater: LayoutInflater = context?.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater inflater.inflate(R.layout.component_multiple_choice, this) // Getting elements in XML title = find(R.id.multiple_choice_title) nonMandatoryText = find(R.id.non_mandatory_text) selectionContainer = find(R.id.selection_container) // Extract value from XML val a = context.theme.obtainStyledAttributes(attrs, R.styleable.MultipleChoiceCard, 0, 0) val titleValue = a.getString(R.styleable.MultipleChoiceCard_title) val nonMandatoryTextValue = a.getString(R.styleable.MultipleChoiceCard_nonMandatoryText) ?: "" val colorValue = a.getInt(R.styleable.MultipleChoiceCard_cardColor, R.color.user_deep_orange) val partLayout = a.getInt(R.styleable.MultipleChoiceCard_partLayout, R.layout.choice_rythm_part) // Applying the XML values to the wanted elements title.text = titleValue title.setTextColor(colorValue) // Set the non mandatory text visible if the value is not an empty string if(nonMandatoryTextValue != ""){ nonMandatoryText.visibility = View.VISIBLE nonMandatoryText.text = nonMandatoryTextValue } val inflatedLayout: View = inflater.inflate(partLayout, selectionContainer, false) selectionContainer.addView(inflatedLayout) a?.recycle() } } 

Archivo XML de componente

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.CardView android:layout_height="wrap_content" android:layout_width="match_parent" android:padding="20dp" android:id="@+id/rythm_card" app:cardBackgroundColor="#2d292a"> <RelativeLayout android:layout_height="match_parent" android:layout_width="match_parent" android:padding="20dp"> <TextView android:id="@+id/multiple_choice_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAllCaps="true" android:textColor="@color/user_deep_orange" android:layout_marginBottom="10dp" android:textStyle="bold"> </TextView> <TextView android:id="@+id/non_mandatory_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/multiple_choice_title" android:textColor="#8c8f91" android:textSize="13sp" android:textStyle="italic" android:visibility="gone" android:layout_marginBottom="10dp"> </TextView> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/non_mandatory_text" android:id="@+id/selection_container"> </RelativeLayout> </RelativeLayout> </android.support.v7.widget.CardView> </LinearLayout> 

Diseño pasado como atributo

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <RadioGroup android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/non_mandatory_text" android:id="@+id/rythm_radio_group"> <RadioButton android:layout_height="wrap_content" android:layout_width="match_parent" android:text="Libre" android:textSize="20sp" android:layoutDirection="rtl" android:buttonTint="@color/user_deep_orange" android:layout_marginBottom="10dp"> </RadioButton> <RadioButton android:layout_height="wrap_content" android:layout_width="match_parent" android:text="Toutes les 10 secondes" android:textSize="20sp" android:layoutDirection="rtl" android:buttonTint="@color/user_deep_orange" android:layout_marginBottom="10dp"> </RadioButton> <RadioButton android:layout_height="wrap_content" android:layout_width="match_parent" android:text="Toutes les 30 secondes" android:textSize="20sp" android:layoutDirection="rtl" android:buttonTint="@color/user_deep_orange" android:layout_marginBottom="10dp"> </RadioButton> <RadioButton android:layout_height="wrap_content" android:layout_width="match_parent" android:text="Toutes les minutes" android:textSize="20sp" android:layoutDirection="rtl" android:buttonTint="@color/user_deep_orange"> </RadioButton> </RadioGroup> </LinearLayout> 

Después de search, encontré la solución, y fue solo un error tonto.

La línea val partLayout = a.getInt(R.styleable.MultipleChoiceCard_partLayout, R.layout.choice_rythm_part) debe get un resourceId y no un int, por lo que la solución es replace getInt por getResourceId .

El código debería verse así.

 val partLayout = a.getResourceId(R.styleable.MultipleChoiceCard_partLayout, R.layout.choice_rythm_part) 

Encontré la solución en esta publicación .

  • Cómo corregir recrear mediante progtwigción Layout
  • Diseño inflado por progtwigción con las extensiones de Kotlin para Android
  • Problema de context al usar Anko DSL dentro del adaptador personalizado para ListView
  • Cómo establecer el ancho del borde FloatingActionButton con Anko
  • Inflar el file xml binary de exception en Windows
  • Reproductor de video flotante de estilo Youtube
  • Crear paginador de visualización mediante progtwigción en la barra de tabs, pero el contenido de paginador de vista se desplaza por las tabs
  • Usando la variable de otro file Kotlin
  • Error: no se puede cambiar el título de SupportActionBar