Search code examples
androidmaterial-designandroid-toolbarandroid-xmlinflate-exception

Error inflating class android.support.v7.widget.Toolbar in Android Studio - Java


I'm implementing material design on my app. Whenever I try to inflate the layout, the app crashes. I have the same exact code in another test project I made and works completely fine.

It's supposed to check if there is a logged user via Firebase and then go directly to the main menu if that's the case. In either case, if the user tries to log in, it crashes.

I've looked at many similar questions, but they all are from 2 years ago and the libraries have changed a lot, and no answer suits my problem.

Logcat

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.hirsch.gonzalo.ustudy, PID: 23340
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hirsch.gonzalo.ustudy/com.hirsch.gonzalo.ustudy.MainActivity}: android.view.InflateException: Binary XML file line #34: Binary XML file line #34: Error inflating class android.support.v7.widget.Toolbar
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2426)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490)
    at android.app.ActivityThread.-wrap11(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5443)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
 Caused by: android.view.InflateException: Binary XML file line #34: Binary XML file line #34: Error inflating class android.support.v7.widget.Toolbar
    at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
    at com.hirsch.gonzalo.ustudy.Fragments.MainMenuFragment.onCreateView(MainMenuFragment.java:57)
    at android.support.v4.app.Fragment.performCreateView(Fragment.java:2439)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460)
    at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
    at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:802)
    at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625)
    at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411)
    at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366)
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273)
    at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3273)
    at android.support.v4.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:3235)
    at android.support.v4.app.FragmentController.dispatchStart(FragmentController.java:212)
    at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:628)
    at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178)
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1260)
    at android.app.Activity.performStart(Activity.java:6261)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2389)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490) 
    at android.app.ActivityThread.-wrap11(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5443) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
 Caused by: android.view.InflateException: Binary XML file line #34: Error inflating class android.support.v7.widget.Toolbar
    at android.view.LayoutInflater.createView(LayoutInflater.java:645)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
    at com.hirsch.gonzalo.ustudy.Fragments.MainMenuFragment.onCreateView(MainMenuFragment.java:57) 
    at android.support.v4.app.Fragment.performCreateView(Fragment.java:2439) 
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460) 
    at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784) 
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852) 
    at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:802) 
    at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625) 
    at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411) 
    at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366) 
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273) 
    at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3273) 
    at android.support.v4.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:3235) 
    at android.support.v4.app.FragmentController.dispatchStart(FragmentController.java:212) 
    at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:628) 
    at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178) 
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1260) 
    at android.app.Activity.performStart(Activity.java:6261) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2389) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490) 
    at android.app.ActivityThread.-wrap11(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5443) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
 Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Constructor.newInstance(Native Method)
    at android.view.LayoutInflater.createView(LayoutInflater.java:619)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764) 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
    at com.hirsch.gonzalo.ustudy.Fragments.MainMenuFragment.onCreateView(MainMenuFragment.java:57) 
    at android.support.v4.app.Fragment.performCreateView(Fragment.java:2439) 
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460) 
    at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784) 
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852) 
    at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:802) 
    at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625) 
    at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411) 
    at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366) 
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273) 
    at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3273) 
    at android.support.v4.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:3235) 
    at android.support.v4.app.FragmentController.dispatchStart(FragmentController.java:212) 
    at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:628) 
    at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178) 
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1260) 
    at android.app.Activity.performStart(Activity.java:6261) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2389) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490) 
    at android.app.ActivityThread.-wrap11(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5443) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
 Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f080081
    at android.content.res.Resources.getValue(Resources.java:1351)
    at android.support.v7.widget.AppCo

MainMenuFragment.java

    /.../
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.main_menu_fragment, container, false);

    /.../
}

main_menu_fragment.xml

    <?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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:clipToPadding="false"
    android:clipChildren="false"
    tools:context=".Fragments.MainMenuFragment">

    <LinearLayout
        style="@style/Widget.Gonzalo.Backdrop"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_horizontal"
        android:orientation="vertical"
        android:paddingTop="100dp"
        android:paddingBottom="100dp">


        <include layout="@layout/backdrop"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:elevation="0dp">

            <android.support.v7.widget.Toolbar
                android:id="@+id/app_bar"
                style="@style/Widget.Gonzalo.Toolbar"
                android:layout_width="match_parent"
                android:layout_height="@dimen/toolbar_height"
                android:paddingStart="12dp"
                android:paddingLeft="12dp"
                android:paddingEnd="12dp"
                android:paddingRight="12dp"
                app:contentInsetStart="0dp"
                app:navigationIcon="@drawable/menu"
                app:title="@string/app_name" />

        </android.support.design.widget.AppBarLayout>

        <android.support.v4.widget.NestedScrollView
            android:id="@+id/product_grid"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:elevation="8dp"
            android:background="@color/productGridBackgroundColor"
            android:paddingStart="@dimen/product_grid_spacing"
            android:paddingEnd="@dimen/product_grid_spacing"
            app:layout_behavior="@string/appbar_scrolling_view_behavior">

            <android.support.v7.widget.RecyclerView
                android:id="@+id/recycler_view"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>

        </android.support.v4.widget.NestedScrollView>
    </LinearLayout>
</FrameLayout>

Style

<style name="Widget.Gonzalo.Toolbar" parent="Widget.AppCompat.Toolbar">
    <item name="android:background">@color/colorPrimaryDark</item>
    <item name="android:theme">@style/AppTheme</item>
    <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
    <item name="titleTextAppearance">@style/TextAppearance.Gonzalo.Toolbar</item>
</style>

<style name="TextAppearance.Gonzalo.Toolbar" parent="TextAppearance.MaterialComponents.Button">
    <item name="android:textSize">16sp</item>
</style>

App build.gradle

 apply plugin: 'com.android.application'
android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.hirsch.gonzalo.ustudy"
        minSdkVersion 23
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    api 'com.android.support:design:28.0.0'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.google.firebase:firebase-core:16.0.7'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.google.firebase:firebase-auth:16.1.0'
    implementation 'com.google.firebase:firebase-firestore:18.1.0'
    implementation 'com.android.volley:volley:1.1.0'
    implementation 'com.google.code.gson:gson:2.8.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

    implementation 'org.jetbrains:annotations-java5:15.0'
}

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

Solution

  • I solved it thanks to this post.

    Error inflating class android.support.v7.widget.Toolbar?

    The problem was that when I imported all the drawable files I'm using, I don't know why the fu** Android Studio decided to import them in the v-24 folder without warning me.

    I moved them to the non v-24 version and it worked.