BottomBar
BottomBar copied to clipboard
InflateException using state drawable on menu on api 17
Hey, great library, thank you guys for it.
I found a bug - if we set the tab icon to a drawable with states it will throw an exception on low API's, I just tested on 17.
menu xml:
<?xml version="1.0" encoding="utf-8"?> <tabs> <tab id="@+id/bottomItemDashboard" icon="@drawable/ic_dashboard_black" title="Dashboard" /> <tab id="@+id/bottomItemJobs" icon="@drawable/bottombar_jobs_icon" title="Jobs" /> <tab id="@+id/bottomItemChat" icon="@drawable/bottombar_chat_icon" title="Chat" /> <tab id="@+id/bottomItemAccount" icon="@drawable/bottombar_account_icon" title="Account" /> </tabs>
ic_dashboard_black is just an icon, the exception gets thrown in the 2nd tab.
bottombar_jobs_icon:
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_jobs_black" android:state_selected="true" /> <item android:drawable="@drawable/ic_jobs_black_outlined" android:state_selected="false" /> </selector>
exception:
java.lang.RuntimeException: Unable to start activity ComponentInfo{co.buzzhire.buzzworker/co.buzzhire.buzzworker.home.arch.view.ArchActivity}: android.view.InflateException: Binary XML file line #25: Error inflating class com.roughike.bottombar.BottomBar at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2429) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493) at android.app.ActivityThread.access$800(ActivityThread.java:166) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5584) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) at dalvik.system.NativeStart.main(Native Method) Caused by: android.view.InflateException: Binary XML file line #25: Error inflating class com.roughike.bottombar.BottomBar at android.view.LayoutInflater.createView(LayoutInflater.java:627) at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.createCustomViewInternal(CalligraphyLayoutInflater.java:211) at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.access$000(CalligraphyLayoutInflater.java:20) at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$PrivateWrapperFactory2.onCreateView(CalligraphyLayoutInflater.java:302) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696) at android.view.LayoutInflater.rInflate(LayoutInflater.java:762) at android.view.LayoutInflater.inflate(LayoutInflater.java:499) at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(CalligraphyLayoutInflater.java:60) at android.view.LayoutInflater.inflate(LayoutInflater.java:398) at android.view.LayoutInflater.inflate(LayoutInflater.java:354) at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:292) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) at co.buzzhire.buzzworker.home.arch.view.ArchActivity.onCreate(ArchActivity.java:91) at android.app.Activity.performCreate(Activity.java:5442) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2393) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493) at android.app.ActivityThread.access$800(ActivityThread.java:166) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5584) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.constructNative(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at android.view.LayoutInflater.createView(LayoutInflater.java:601) at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.createCustomViewInternal(CalligraphyLayoutInflater.java:211) at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.access$000(CalligraphyLayoutInflater.java:20) at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$PrivateWrapperFactory2.onCreateView(CalligraphyLayoutInflater.java:302) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696) at android.view.LayoutInflater.rInflate(LayoutInflater.java:762) at android.view.LayoutInflater.inflate(LayoutInflater.java:499) at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(CalligraphyLayoutInflater.java:60) at android.view.LayoutInflater.inflate(LayoutInflater.java:398) at android.view.LayoutInflater.inflate(LayoutInflater.java:354) at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:292) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) at co.buzzhire.buzzworker.home.arch.view.ArchActivity.onCreate(ArchActivity.java:91) at android.app.Activity.performCreate(Activity.java:5442) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2393) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493) at android.app.ActivityThread.access$800(ActivityThread.java:166) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5584) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) at dalvik.system.NativeStart.main(Native Method) Caused by: android.content.res.Resources$NotFoundException: File res/drawable/bottombar_dashboard_icon.xml from drawable resource ID #0x7f02005c at android.content.res.Resources.loadDrawable(Resources.java:3451) at android.content.res.Resources.getDrawable(Resources.java:1894) at android.support.v7.widget.ResourcesWrapper.getDrawable(ResourcesWrapper.java:128) at android.support.v7.widget.TintResources.getDrawable(TintResources.java:45) at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:374) at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:202) at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:190) at android.support.v7.content.res.AppCompatResources.getDrawable(AppCompatResources.java:100) at android.support.v7.widget.AppCompatImageHelper.setImageResource(AppCompatImageHelper.java:73) at android.support.v7.widget.AppCompatImageView.setImageResource(AppCompatImageView.java:81) at com.roughike.bottombar.BottomBarTab.prepareLayout(BottomBarTab.java:103) at com.roughike.bottombar.BottomBar.updateItems(BottomBar.java:351) at com.roughike.bottombar.BottomBar.setItems(Bott 06-22 16:42:39.313 5408-5772/co.buzzhire.buzzworker I/FirebaseCrash: Sending crashes 06-22 16:42:40.043 5408-5772/co.buzzhire.buzzworker I/FirebaseCrash: Response code: 200 06-22 16:42:40.043 5408-5772/co.buzzhire.buzzworker I/FirebaseCrash: Report sent with crash report id: 05fe2d5ed0000000