support inflating inflateexception error edittext constraintlayout constraint bottom appcompatimageview android android-layout android-design-library snackbar

inflating - SnackBar de Android: error al inflar SnackbarLayout



error inflating class android widget button (1)

Quería probar el nuevo Snackbar de la biblioteca de diseño oficial provista por Google. Su uso está muy cerca de un Toast, así que pensé que sería lo suficientemente simple como para probarlo.

Lo he probado en un emulador que ejecuta 5.1, así como en Samsung Galaxy S6 Edge con 5.0.

Mi problema es que la aplicación se bloquea cuando se supone que muestra el Snackbar.

Código

package com.jayway.andreas.test; import android.app.Activity; import android.os.Bundle; import android.support.design.widget.Snackbar; import android.view.View; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Snackbar.make(v, R.string.test, Snackbar.LENGTH_LONG) .setAction("Action!", new View.OnClickListener() { @Override public void onClick(View v) { // NOP } }) .show(); } }); } }

Diseño:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id="@+id/root_layout" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:text="Button"/> </RelativeLayout>

Archivo gradle

apply plugin: ''com.android.application'' android { compileSdkVersion 22 buildToolsVersion "23.0.0 rc1" defaultConfig { applicationId "com.jayway.andreas.test" minSdkVersion 21 targetSdkVersion 22 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro'' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } } dependencies { compile fileTree(dir: ''libs'', include: [''*.jar'']) compile ''com.android.support:design:22.2.0'' }

He intentado proporcionar diferentes vistas (el RelativeLayout raíz, la vista del botón y la vista de decoración de la ventana) como el primer parámetro, pero no importa cuál haya proporcionado, todavía obtengo el siguiente seguimiento de pila:

android.view.InflateException: Binary XML file line #18: Error inflating class android.support.design.widget.Snackbar$SnackbarLayout E/AndroidRuntime(19107): at android.view.LayoutInflater.createView(LayoutInflater.java:640) E/AndroidRuntime(19107): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750) E/AndroidRuntime(19107): at android.view.LayoutInflater.inflate(LayoutInflater.java:483) E/AndroidRuntime(19107): at android.view.LayoutInflater.inflate(LayoutInflater.java:415) E/AndroidRuntime(19107): at android.support.design.widget.Snackbar.<init>(Snackbar.java:119) E/AndroidRuntime(19107): at android.support.design.widget.Snackbar.make(Snackbar.java:140) E/AndroidRuntime(19107): at android.support.design.widget.Snackbar.make(Snackbar.java:164) E/AndroidRuntime(19107): at com.jayway.andreas.test.MainActivitykr8.51onClick(MainActivity.java:20) E/AndroidRuntime(19107): at android.view.View.performClick(View.java:5217) E/AndroidRuntime(19107): at android.view.View$PerformClick.run(View.java:20983) E/AndroidRuntime(19107): at android.os.Handler.handleCallback(Handler.java:739) E/AndroidRuntime(19107): at android.os.Handler.dispatchMessage(Handler.java:95) E/AndroidRuntime(19107): at android.os.Looper.loop(Looper.java:145) E/AndroidRuntime(19107): at android.app.ActivityThread.main(ActivityThread.java:6141) E/AndroidRuntime(19107): at java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime(19107): at java.lang.reflect.Method.invoke(Method.java:372) E/AndroidRuntime(19107): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) E/AndroidRuntime(19107): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) E/AndroidRuntime(19107): Caused by: java.lang.reflect.InvocationTargetException E/AndroidRuntime(19107): at java.lang.reflect.Constructor.newInstance(Native Method) E/AndroidRuntime(19107): at java.lang.reflect.Constructor.newInstance(Constructor.java:288) E/AndroidRuntime(19107): at android.view.LayoutInflater.createView(LayoutInflater.java:614) E/AndroidRuntime(19107): ... 17 more E/AndroidRuntime(19107): Caused by: android.view.InflateException: Binary XML file line #34: Error inflating class <unknown> E/AndroidRuntime(19107): at android.view.LayoutInflater.createView(LayoutInflater.java:640) E/AndroidRuntime(19107): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55) E/AndroidRuntime(19107): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:689) E/AndroidRuntime(19107): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:748) E/AndroidRuntime(19107): at android.view.LayoutInflater.rInflate(LayoutInflater.java:813) E/AndroidRuntime(19107): at android.view.LayoutInflater.inflate(LayoutInflater.java:480) E/AndroidRuntime(19107): at android.view.LayoutInflater.inflate(LayoutInflater.java:415) E/AndroidRuntime(19107): at android.view.LayoutInflater.inflate(LayoutInflater.java:366) E/AndroidRuntime(19107): at android.support.design.widget.Snackbar$SnackbarLayout.<init>(Snackbar.java:526) E/AndroidRuntime(19107): ... 20 more E/AndroidRuntime(19107): Caused by: java.lang.reflect.InvocationTargetException E/AndroidRuntime(19107): at java.lang.reflect.Constructor.newInstance(Native Method) E/AndroidRuntime(19107): at java.lang.reflect.Constructor.newInstance(Constructor.java:288) E/AndroidRuntime(19107): at android.view.LayoutInflater.createView(LayoutInflater.java:614) E/AndroidRuntime(19107): ... 28 more E/AndroidRuntime(19107): Caused by: java.lang.RuntimeException: Failed to resolve attribute at index 13 E/AndroidRuntime(19107): at android.content.res.TypedArray.getDrawable(TypedArray.java:760) E/AndroidRuntime(19107): at android.view.View.<init>(View.java:3990) E/AndroidRuntime(19107): at android.widget.TextView.<init>(TextView.java:1021) E/AndroidRuntime(19107): at android.widget.TextView.<init>(TextView.java:1016) E/AndroidRuntime(19107): at android.widget.TextView.<init>(TextView.java:1012) E/AndroidRuntime(19107): ... 31 more


Dos pensamientos sobre lo que podría estar mal.

Primero, asegúrese de estar usando la dependencia correcta de Gradle:

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

Segundo, asegúrese de que su actividad esté extendiendo AppCompatActivity y no Activity o ActionBarActivity .

Puede leer la publicación completa para obtener más detalles, pero aquí está la cita relevante sobre la necesidad de AppCompat con la nueva biblioteca de diseño de soporte:

Tenga en cuenta que, dado que la biblioteca de diseño depende de las bibliotecas de soporte de v4 y AppCompat, se incluirán automáticamente cuando agregue la dependencia de la biblioteca de diseño.

Si desea saber por qué, puede leer esto o this para obtener más información sobre la nueva forma "preferida" de Android de manejar las devoluciones de llamada, específicamente utilizando AppCompatDelegate .