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 explicar este extraño comportamiento al establecer márgenes programáticamente a una vista dentro de RelativeLayout?
  • Reproductor de video flotante de estilo Youtube
  • Error: no se puede cambiar el título de SupportActionBar
  • ¿Cómo puedo configurar FlexBox.alignItems para flex_end programáticamente?
  • No se puede "findViewById" en Kotlin. Obteniendo el error "Falló la inferencia de tipo"
  • Cómo establecer el ancho del borde FloatingActionButton con Anko
  • Cómo corregir recrear mediante progtwigción Layout
  • Error XML de Android Studio "Controlador de método correspondiente no encontrado" en onClick
  • Conversión de layout lineal a cuadrícula