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
Post a Comment