support materialbutton inflating floatingactionbutton error android appcompat android-appcompat inflate-exception floating-action-button android-support-design

android - materialbutton - InflateException con FloatingActionButton de la Biblioteca de diseño oficial



binary xml file line#0 error inflating class android support design widget floatingactionbutton (7)

Otra forma de recibir este mensaje es si accidentalmente especificó diferentes versiones de la biblioteca appcompat en diferentes módulos. Es probable que esto suceda cuando cree un nuevo módulo, ya que Android Studio se predetermina a la versión más actual.

Para una forma ordenada de administrar esto en proyectos de módulos múltiples, vea: En Gradle, ¿cómo declaro dependencias comunes en un solo lugar?

Recibo un error al usar el 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 .

Noté 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, configuro la Visibilidad en GONE en algún caso para mi FAB, pero esto es después de que se infla, por lo que no puede ser el problema.

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

¿Es esto un error conocido o tal vez estoy haciendo algo mal?


Si está usando un VectorDrawableCompat (Vector activo), debe usar:

app:srcCompat="@drawable/x"

en lugar de:

android:src="@drawable/x"


Simplemente cambie android a la app :

android:backgroundTint="@color/accent"

A:

app:backgroundTint="@color/accent"


Solo reemplace

<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 lo que funcionó para mí fue asegurar que las versiones de la biblioteca de compatibilidad de aplicaciones y diseño sean las mismas. por ejemplo:

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


en mi caso, fue por la falsa configuración del tema de la actividad. El problema se resolvió después de cambiar el tema de la aplicación a Theme.AppCompat.xxx.


com.android.support:appcompat-v7:21+ agregó soporte para tintar widgets en dispositivos que ejecutan pre android 5.1 (API Nivel 21). Para usarlo, asegúrese de extender o configurar el tema 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" />