Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


InflateException con FloatingActionButton de la biblioteca de diseño oficial

Estoy recibiendo un error usando el botón FloatingActionButton oficial de la biblioteca de diseño de soporte de Google.

Aquí está mi LogCat.

 android.view.InflateException: Binary XML file line #34: Error inflating class android.support.design.widget.FloatingActionButton at android.view.LayoutInflater.createView(LayoutInflater.java:633) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) at android.view.LayoutInflater.rInflate(LayoutInflater.java:809) at android.view.LayoutInflater.inflate(LayoutInflater.java:504) at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method) at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:655) at android.view.LayoutInflater.inflate(Unknown Source) at android.view.LayoutInflater.inflate(LayoutInflater.java:414) at ---.---.com.---.SubCategoryFragment.onCreateView(SubCategoryFragment.java:47) at android.support.v4.app.Fragment.performCreateView(Fragment.java:1789) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:117) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.newInstance(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:288) at android.view.LayoutInflater.createView(LayoutInflater.java:607) ... 24 more Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable()' on a null object reference at android.graphics.drawable.LayerDrawable$ChildDrawable.<init>(LayerDrawable.java:968) at android.graphics.drawable.LayerDrawable$LayerState.<init>(LayerDrawable.java:1014) at android.graphics.drawable.RippleDrawable$RippleState.<init>(RippleDrawable.java:910) at android.graphics.drawable.RippleDrawable.createConstantState(RippleDrawable.java:901) at android.graphics.drawable.RippleDrawable.createConstantState(RippleDrawable.java:90) at android.graphics.drawable.LayerDrawable.mutate(LayerDrawable.java:932) at android.graphics.drawable.RippleDrawable.mutate(RippleDrawable.java:891) at android.view.View.applyBackgroundTint(View.java:16324) at android.view.View.setBackgroundDrawable(View.java:16193) at android.support.design.widget.FloatingActionButton.access$201(FloatingActionButton.java:56) at android.support.design.widget.FloatingActionButton$1.setBackgroundDrawable(FloatingActionButton.java:118) at android.support.design.widget.FloatingActionButtonLollipop.setBackgroundDrawable(FloatingActionButtonLollipop.java:75) at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:131) at android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.java:79) ... 27 more 

La única línea que apunta a mi aplicación es donde infla el archivo xml , y la línea en ese archivo que es mi FloatingActionButton .

  <android.support.design.widget.FloatingActionButton android:id="@+id/myFABSubCat" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_margin="16dp" android:backgroundTint="@color/accent" android:src="@drawable/add_icon" app:borderWidth="0dp" app:elevation="4sp" /> 

Información extra:

Aquí está el tema de mi aplicación:

 <resources> <!-- Base application theme. --> <style name="MBTIAppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/primary</item> <item name="colorPrimaryDark">@color/primaryDark</item> <item name="colorAccent">@color/accent</item> <item name="android:windowContentOverlay">@null</item> </style> <style name="ThemeNoActionBar" parent="MBTIAppTheme"> <item name="windowActionBar">false</item> </style> </resources> 

Sí, estoy usando una AppCompatActivity .

Me di cuenta de que estoy usando una versión anterior de appcompat:

 com.android.support:appcompat-v7:22.1.1 

Esto parece estar actualizado:

 compile 'com.android.support:design:22.2.0' 

También,

 minSdkVersion 16 targetSdkVersion 22 

Ahora, defino la visibilidad a GONE en algunos casos para mi FAB, pero esto es después de que se infle de modo que no puede ser el problema.

Ahora, esto funciona con mi dispositivo 5.1, pero los usuarios que tienen problemas tienen 5.0.

¿Se trata de un error conocido o tal vez estoy haciendo algo mal?

  • Manejo del almacenamiento de disco completo en Android
  • Patrón de diseño para capturar excepciones no controladas en AsyncTask
  • Cómo manejar las excepciones MonoDroid sin capturar globalmente y evitar que la aplicación se bloquee
  • EditTextPreference hace que Inflate Exception
  • 5 Solutions collect form web for “InflateException con FloatingActionButton de la biblioteca de diseño oficial”

    com.android.support:appcompat-v7:21+ añadido soporte para los widgets tintados en dispositivos que ejecutan pre android 5.1 (API Level 21). Para utilizarlo, asegúrate de extender o configurar el Tema de AppCompat y usar app:backgroundTint lugar de android:backgroundTint .

    Ejemplo:

     <android.support.design.widget.FloatingActionButton xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="16dp" android:src="@drawable/icon" app:backgroundTint="@color/accent" app:borderWidth="0dp" /> 

    Solo reemplaza

     <android.support.design.widget.FloatingActionButton ... ... android:backgroundTint /> 

    a

     <android.support.design.widget.FloatingActionButton ... ... app:backgroundTint /> 

    Tuve el mismo problema y probé una solución diferente. Pero el que trabajó para mí fue asegurar que appcompat y las versiones de la biblioteca de soporte de diseño son las mismas. por ejemplo:

     compile 'com.android.support:appcompat-v7:23.2.0' compile 'com.android.support:design:23.2.0' 

    Si está usando un VectorDrawableCompat (activo vectorial) debe utilizar:

     app:srcCompat="@drawable/x" 

    en lugar de:

     android:src="@drawable/x" 

    Esto resolvió mi problema.

    Otra forma de obtener este mensaje es si has especificado accidentalmente diferentes versiones de la biblioteca appcompat en diferentes módulos. Esto es probable que suceda cuando se crea un nuevo módulo, ya que Android Studio se convierte por defecto en la versión más actual.

    Para una manera ordenada de administrar esto en proyectos multi-módulo, vea: En Gradle, ¿cómo puedo declarar dependencias comunes en un solo lugar?

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.