Hirantha Rathnayake
Hirantha Rathnayake

Reputation: 11

Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView on lollipop

When I use com.google.android.material.bottomnavigation.BottomNavigationView in AndroidX it shows error on lollipop but I tried same code on higher android versions they were succeeded. Error is below. I have tried everything based on the internet and they weren't success. Please help.

Error:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.treflor, PID: 32246
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.treflor/com.treflor.ui.MainActivity}: android.view.InflateException: Binary XML file line #20: Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2499)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2563)
        at android.app.ActivityThread.access$800(ActivityThread.java:162)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1438)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:209)
        at android.app.ActivityThread.main(ActivityThread.java:5900)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1005)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:800)
     Caused by: android.view.InflateException: Binary XML file line #20: Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView
        at android.view.LayoutInflater.createView(LayoutInflater.java:633)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
        at com.treflor.ui.MainActivity.onCreate(MainActivity.kt:18)
        at android.app.Activity.performCreate(Activity.java:5981)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1124)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2452)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2563) 
        at android.app.ActivityThread.access$800(ActivityThread.java:162) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1438) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:209) 
        at android.app.ActivityThread.main(ActivityThread.java:5900) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1005) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:800) 
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
        at android.view.LayoutInflater.createView(LayoutInflater.java:607)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555) 
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161) 
        at com.treflor.ui.MainActivity.onCreate(MainActivity.kt:18) 
        at android.app.Activity.performCreate(Activity.java:5981) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1124) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2452) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2563) 
        at android.app.ActivityThread.access$800(ActivityThread.java:162) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1438) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:209) 
        at android.app.ActivityThread.main(ActivityThread.java:5900) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1005) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:800) 
     Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f070097
        at android.content.res.Resources.getValue(Resources.java:1428)
        at androidx.appcompat.widget.ResourceManagerInternal.loadDrawableFromDelegates(ResourceManagerInternal.java:252)
        at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:139)
        at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:132)
        at androidx.appcompat.content.res.AppCompatResources.getDrawable(AppCompatResources.java:104)
        at androidx.appcompat.view.menu.MenuItemImpl.getIcon(MenuItemImpl.java:505)
        at com.google.android.material.bottomnavigation.BottomNavigationItemView.initialize(BottomNavigationItemView.java:136)
        at com.google.android.material.bottomnavigation.BottomNavigationMenuView.buildMenuView(BottomNavigationMenuView.java:536)
        at com.google.android.material.bottomnavigation.BottomNavigationPresenter.updateMenuView(BottomNavigationPresenter.java:67)
        at com.google.android.material.bottomnavigation.BottomNavigationView.inflateMenu(BottomNavigationView.java:343)
        at com.google.android.material.bottomnavigation.BottomNavigationView.<init>(BottomNavigationView.java:225)
        at com.google.android.material.bottomnavigation.BottomNavigationView.<init>(BottomNavigationView.java:132)
        at java.lang.reflect.Constructor.newInstance(Native Method) 
        at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
        at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555) 
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161) 
        at com.treflor.ui.MainActivity.onCreate(MainActivity.kt:18) 
        at android.app.Activity.performCreate(Activity.java:5981) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1124) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2452) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2563) 
        at android.app.ActivityThread.access$800(ActivityThread.java:162) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1438) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:209) 
        at android.app.ActivityThread.main(ActivityThread.java:5900) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1005) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:800) 

MainActivity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".ui.MainActivity"
    android:id="@+id/rootContainer">

    <fragment
        android:id="@+id/nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        app:defaultNavHost="true"
        app:navGraph="@navigation/main_bottom_navigation" />

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_nav"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:menu="@menu/bottom_bar_nav"/>

</LinearLayout>

MainActivity.kt

package com.treflor.ui

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.navigation.NavController
import androidx.navigation.Navigation
import androidx.navigation.ui.setupWithNavController
import com.treflor.R
import kotlinx.android.synthetic.main.activity_main.*


class MainActivity : AppCompatActivity() {

    private lateinit var navController: NavController

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        navController = Navigation.findNavController(this, R.id.nav_host_fragment)
        bottom_nav.setupWithNavController(navController)

    }
}

gardle

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

apply plugin: "kotlin-kapt"

Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
def googleMapApiKey = properties.getProperty('google.map.key')

android {
    compileSdkVersion 29
    defaultConfig {
        applicationId "com.treflor"
        minSdkVersion 19
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        resValue "string", "googleMapApiKey", googleMapApiKey
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }
    dataBinding {
        enabled = true
    }

    buildToolsVersion = '28.0.3'
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.core:core-ktx:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'


    // lifecycle
    def lifecycle_version = '2.1.0'
    implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
    annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"

    // retrofit2
    def retrofit2_version = "2.6.2"
    implementation "com.squareup.retrofit2:retrofit:$retrofit2_version"
    implementation "com.squareup.retrofit2:converter-gson:$retrofit2_version"
    implementation "com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2"

    // Room
    def room_version = '2.2.1'
    implementation "androidx.room:room-runtime:$room_version"
    kapt "androidx.room:room-compiler:$room_version"

    // Navigation
    def nav_version = "2.1.0"
    implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
    implementation "androidx.navigation:navigation-fragment:$nav_version"
    implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
    implementation "androidx.navigation:navigation-ui:$nav_version"

    // material components
    def material_version = "1.2.0-alpha01"
    implementation "com.google.android.material:material:$material_version"

    // kodein DI
    def kodein_version = "6.4.0"
    implementation "org.kodein.di:kodein-di-generic-jvm:$kodein_version"
    implementation "org.kodein.di:kodein-di-framework-android-x:$kodein_version"

    //font awesome
    implementation 'info.androidhive:fontawesome:0.0.5'

    //Circular Image view
    implementation 'de.hdodenhof:circleimageview:3.0.1'

    // glide
    def glide_version = "4.10.0"
    implementation "com.github.bumptech.glide:glide:$glide_version"
    annotationProcessor "com.github.bumptech.glide:compiler:$glide_version"

    // Gson
    def gson_version = "2.8.5"
    implementation "com.google.code.gson:gson:$gson_version"

    // Kotlin Android Coroutines
    def coroutine_version = "1.3.0-M1"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutine_version"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutine_version"

    // Better dateTime-time support even on older Android versions
    def threetenbp_version = "1.2.1"
    implementation "com.jakewharton.threetenabp:threetenabp:$threetenbp_version"


    // Preference
    def preference_version = "1.1.0"
    implementation "androidx.preference:preference:$preference_version"

    // New Material Design
    def android_material_version = "1.2.0-alpha01"
    implementation "com.google.android.material:material:$android_material_version"

    //google sign in
    def google_auth_version = "17.0.0"
    implementation "com.google.android.gms:play-services-auth:$google_auth_version"

}

apply plugin: 'com.google.gms.google-services'

Upvotes: 0

Views: 948

Answers (2)

Diederik
Diederik

Reputation: 6488

I just did a clean build (not all the way to clear data and invalidate caches) and it started working again.

Upvotes: 0

Ehsan Jkr
Ehsan Jkr

Reputation: 31

Make sure that you put drawables in "res/drawable" folder and not in "res/drawable-v**". I had a similar problem and by moving files to the "res/drawable" folder the error has gone.

Upvotes: 2

Related Questions