Android SnackBar: error inflating SnackbarLayout -


i wanted try out new snackbar official design library provided google. usage close toast thought simple enough try out.

i've tried out on emulator running 5.1 samsung galaxy s6 edge running 5.0.

my problem app crashes when it's supposed display snackbar.

code

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();             }         });     } } 

layout:

<?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> 

gradle file

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' } 

i have tried providing different views(root relativelayout, view of button , window's decor view) first parameter, no matter 1 i've provided still following stacktrace:

android.view.inflateexception: binary xml file line #18: error inflating class android.support.design.widget.snackbar$snackbarlayout e/androidruntime(19107):    @ android.view.layoutinflater.createview(layoutinflater.java:640) e/androidruntime(19107):    @ android.view.layoutinflater.createviewfromtag(layoutinflater.java:750) e/androidruntime(19107):    @ android.view.layoutinflater.inflate(layoutinflater.java:483) e/androidruntime(19107):    @ android.view.layoutinflater.inflate(layoutinflater.java:415) e/androidruntime(19107):    @ android.support.design.widget.snackbar.<init>(snackbar.java:119) e/androidruntime(19107):    @ android.support.design.widget.snackbar.make(snackbar.java:140) e/androidruntime(19107):    @ android.support.design.widget.snackbar.make(snackbar.java:164) e/androidruntime(19107):    @ com.jayway.andreas.test.mainactivitykr8.51onclick(mainactivity.java:20) e/androidruntime(19107):    @ android.view.view.performclick(view.java:5217) e/androidruntime(19107):    @ android.view.view$performclick.run(view.java:20983) e/androidruntime(19107):    @ android.os.handler.handlecallback(handler.java:739) e/androidruntime(19107):    @ android.os.handler.dispatchmessage(handler.java:95) e/androidruntime(19107):    @ android.os.looper.loop(looper.java:145) e/androidruntime(19107):    @ android.app.activitythread.main(activitythread.java:6141) e/androidruntime(19107):    @ java.lang.reflect.method.invoke(native method) e/androidruntime(19107):    @ java.lang.reflect.method.invoke(method.java:372) e/androidruntime(19107):    @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1399) e/androidruntime(19107):    @ com.android.internal.os.zygoteinit.main(zygoteinit.java:1194) e/androidruntime(19107): caused by: java.lang.reflect.invocationtargetexception e/androidruntime(19107):    @ java.lang.reflect.constructor.newinstance(native method) e/androidruntime(19107):    @ java.lang.reflect.constructor.newinstance(constructor.java:288) e/androidruntime(19107):    @ 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):    @ android.view.layoutinflater.createview(layoutinflater.java:640) e/androidruntime(19107):    @ com.android.internal.policy.impl.phonelayoutinflater.oncreateview(phonelayoutinflater.java:55) e/androidruntime(19107):    @ android.view.layoutinflater.oncreateview(layoutinflater.java:689) e/androidruntime(19107):    @ android.view.layoutinflater.createviewfromtag(layoutinflater.java:748) e/androidruntime(19107):    @ android.view.layoutinflater.rinflate(layoutinflater.java:813) e/androidruntime(19107):    @ android.view.layoutinflater.inflate(layoutinflater.java:480) e/androidruntime(19107):    @ android.view.layoutinflater.inflate(layoutinflater.java:415) e/androidruntime(19107):    @ android.view.layoutinflater.inflate(layoutinflater.java:366) e/androidruntime(19107):    @ 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):    @ java.lang.reflect.constructor.newinstance(native method) e/androidruntime(19107):    @ java.lang.reflect.constructor.newinstance(constructor.java:288) e/androidruntime(19107):    @ android.view.layoutinflater.createview(layoutinflater.java:614) e/androidruntime(19107):    ... 28 more e/androidruntime(19107): caused by: java.lang.runtimeexception: failed resolve attribute @ index 13 e/androidruntime(19107):    @ android.content.res.typedarray.getdrawable(typedarray.java:760) e/androidruntime(19107):    @ android.view.view.<init>(view.java:3990) e/androidruntime(19107):    @ android.widget.textview.<init>(textview.java:1021) e/androidruntime(19107):    @ android.widget.textview.<init>(textview.java:1016) e/androidruntime(19107):    @ android.widget.textview.<init>(textview.java:1012) e/androidruntime(19107):    ... 31 more 

two thoughts on wrong.

first, make sure using correct gradle dependency:

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

second, make sure activity extending appcompatactivity , not activity or actionbaractivity.

you can read full post more details, here's relevant quote needing appcompat new support design library:

note design library depends on support v4 , appcompat support libraries, included automatically when add design library dependency.

if want know why, can read this or this more background android's new "preferred" way of handling callbacks, using appcompatdelegate.


Comments