BottomNavigationView inflating error. Resources$NotFoundException: Resource ID #0x0

1.3k Views Asked by At

I'm having some problem with BottomNavigationView from design support library. I am using it in my activity_main.xml:

<android.support.design.widget.BottomNavigationView
        android:id="@+id/navigation"
        app:itemIconSize="16dp"
        app:labelVisibilityMode="labeled"
        app:itemTextColor="@color/white"
        app:itemIconTint="@color/white"
        app:itemBackground="@color/medium_purple"
        app:menu="@menu/main"
        android:layout_alignParentBottom="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

The app crashes when inflating that xml. The full stack trace of the exception is below:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.frolo.musp.dev/com.alexfrolov.mp.main.MainActivity}: android.view.InflateException: Binary XML file line #16: Binary XML file line #16: Error inflating class android.support.design.widget.BottomNavigationView
                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2814)
                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
                                                                        at android.app.ActivityThread.-wrap11(Unknown Source:0)
                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1613)
                                                                        at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                        at android.os.Looper.loop(Looper.java:164)
                                                                        at android.app.ActivityThread.main(ActivityThread.java:6651)
                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:822)
                                                                     Caused by: android.view.InflateException: Binary XML file line #16: Binary XML file line #16: Error inflating class android.support.design.widget.BottomNavigationView
                                                                     Caused by: android.view.InflateException: Binary XML file line #16: Error inflating class android.support.design.widget.BottomNavigationView
                                                                     Caused by: java.lang.reflect.InvocationTargetException
                                                                        at java.lang.reflect.Constructor.newInstance0(Native Method)
                                                                        at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
                                                                        at android.view.LayoutInflater.createView(LayoutInflater.java:651)
                                                                        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:794)
                                                                        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:734)
                                                                        at android.view.LayoutInflater.rInflate(LayoutInflater.java:867)
                                                                        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828)
                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:519)
                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:427)
                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
                                                                        at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
                                                                        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                                                                        at com.alexfrolov.mp.main.MainActivity.onCreate(MainActivity.java:165)
                                                                        at android.app.Activity.performCreate(Activity.java:7074)
                                                                        at android.app.Activity.performCreate(Activity.java:7065)
                                                                        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1215)
                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2767)
                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
                                                                        at android.app.ActivityThread.-wrap11(Unknown Source:0)
                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1613)
                                                                        at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                        at android.os.Looper.loop(Looper.java:164)
                                                                        at android.app.ActivityThread.main(ActivityThread.java:6651)
                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:822)
                                                                     Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x0
                                                                        at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:220)
                                                                        at android.content.res.MiuiResourcesImpl.getValue(MiuiResourcesImpl.java:93)
                                                                        at android.content.res.Resources.getColorStateList(Resources.java:1034)
                                                                        at android.content.Context.getColorStateList(Context.java:631)
                                                                        at android.support.v7.content.res.AppCompatResources.getColorStateList(AppCompatResources.java:67)
                                                                        at android.support.design.internal.BottomNavigationMenuView.createDefaultColorStateList(BottomNavigationMenuView.java:467)
                                                                        at android.support.design.internal.BottomNavigationMenuView.<init>(BottomNavigationMenuView.java:101)
                                                                        at android.support.design.internal.BottomNavigationMenuView.<init>(BottomNavigationMenuView.java:86)

The versions of all support libs and the version of compileSdk are same. I really don't understand what a hell is that. Can anybody explain me please?

Thanks

2

There are 2 best solutions below

0
Bobby Hargett On BEST ANSWER

I had this problem and it baffled me for a day or so. Basically, the BottomNav wants a colorstatelist defined for textColorSecondary in your theme as opposed to a just plain color. So I went from:

<style name="MTheme" parent="Theme.MaterialComponents.Light.Bridge">
    ...   
    <item name="android:textColorSecondary">#295055</item>

to

<style name="MTheme" parent="Theme.MaterialComponents.Light.Bridge">
    ...
    <item name="android:textColorSecondary">@color/secondary_textcolor</item>

where secondary_textcolor equals

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="true" android:color="#295055"/>
    <item android:state_enabled="false"  android:color="@color/disabled"/> 
</selector>

I wasted a lot of time adding and removing dependencies trying to find this solution.

0
Lucem On

The problem is in your question title

Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x0

It means that you are using a resource that is not existent. I cannot know which it is but this is how you will fix. Go to the file @menu/main and remove all attributes for icons. You can leave the text. Add one by one to check which one is the problem. It is most likely to be that your icons have been mistakenly placed inside the folder drawable-24 instead of drawable or a higher android API folder than the one you are testing on. Sometimes we make those mistakes.

Also note that some attributes only apply starting a certain android API. Consider checking the attributes starting with app.

    app:itemTextColor="@color/white"
    app:itemIconTint="@color/white"
    app:itemBackground="@color/medium_purple"