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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/26561235/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-20 11:49:50  来源:igfitidea点击:

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

androidandroid-appcompatmaterial-design

提问by AruLNadhaN

I am trying to get Material Design for my App by following this method.

I am trying to get Material Design for my App by following this method.

Whenever I run the App it shows the following error:

Whenever I run the App it shows the following error:

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

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

I checked whether I have added the appcompat properly. But it is all Correct to me. So please tell me what am I doing wrong ?

I checked whether I have added the appcompat properly. But it is all Correct to me. So please tell me what am I doing wrong ?

build.gradle

build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion '21.0.2'

    defaultConfig {
        applicationId "io.bxbxbai.feedlistviewdemo"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles 'proguard-rules.pro'
        }
    }
}

configurations {
    all*.exclude group: 'com.android.support', module: 'support-v4'
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile project(':materialDesign')
    compile 'com.balysv.materialmenu:material-menu:1.4.0'
    compile 'com.android.support:appcompat-v7:21.+'
}

Logcat

Logcat

02:11.641  20583-20583/io.bxbxbai.feedlistviewdemo E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: io.bxbxbai.feedlistviewdemo, PID: 20583
    java.lang.RuntimeException: Unable to start activity ComponentInfo{io.bxbxbai.feedlistviewdemo/io.bxbxbai.androiddemos.MainActivity}: android.view.InflateException: Binary XML file line #3: Error inflating class android.support.v7.widget.Toolbar
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2224)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2283)
            at android.app.ActivityThread.access0(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5158)
            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:796)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: android.view.InflateException: Binary XML file line #3: Error inflating class android.support.v7.widget.Toolbar
            at android.view.LayoutInflater.createView(LayoutInflater.java:620)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
            at android.view.LayoutInflater.parseInclude(LayoutInflater.java:816)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:745)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
            at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228)
            at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)
            at io.bxbxbai.androiddemos.MainActivity.onCreate(MainActivity.java:31)
            at android.app.Activity.performCreate(Activity.java:6144)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2181)
????????????at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2283)
????????????at android.app.ActivityThread.access0(ActivityThread.java:144)
????????????at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
????????????at android.os.Handler.dispatchMessage(Handler.java:102)
????????????at android.os.Looper.loop(Looper.java:136)
????????????at android.app.ActivityThread.main(ActivityThread.java:5158)
????????????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:796)
????????????at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
????????????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:594)
????????????at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
????????????at android.view.LayoutInflater.parseInclude(LayoutInflater.java:816)
????????????at android.view.LayoutInflater.rInflate(LayoutInflater.java:745)
????????????at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
????????????at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
????????????at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
????????????at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228)
????????????at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)
????????????at io.bxbxbai.androiddemos.MainActivity.onCreate(MainActivity.java:31)
????????????at android.app.Activity.performCreate(Activity.java:6144)
????????????at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
????????????at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2181)
????????????at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2283)
????????????at android.app.ActivityThread.access0(ActivityThread.java:144)
????????????at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
????????????at android.os.Handler.dispatchMessage(Handler.java:102)
????????????at android.os.Looper.loop(Looper.java:136)
????????????at android.app.ActivityThread.main(ActivityThread.java:5158)
????????????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:796)
????????????at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
????????????at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NoSuchMethodError: android.support.v4.content.ContextCompat.getDrawable
            at android.support.v7.internal.widget.TintManager.getDrawable(TintManager.java:133)
            at android.support.v7.internal.widget.TintTypedArray.getDrawable(TintTypedArray.java:62)
            at android.support.v7.widget.Toolbar.<init>(Toolbar.java:248)
            at android.support.v7.widget.Toolbar.<init>(Toolbar.java:190)
????????????at java.lang.reflect.Constructor.constructNative(Native Method)
????????????at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
????????????at android.view.LayoutInflater.createView(LayoutInflater.java:594)
????????????at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
????????????at android.view.LayoutInflater.parseInclude(LayoutInflater.java:816)
????????????at android.view.LayoutInflater.rInflate(LayoutInflater.java:745)
????????????at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
????????????at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
????????????at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
????????????at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228)
????????????at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)
????????????at io.bxbxbai.androiddemos.MainActivity.onCreate(MainActivity.java:31)
????????????at android.app.Activity.performCreate(Activity.java:6144)
????????????at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
????????????at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2181)
????????????at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2283)
????????????at android.app.ActivityThread.access0(ActivityThread.java:144)
????????????at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
????????????at android.os.Handler.dispatchMessage(Handler.java:102)
????????????at android.os.Looper.loop(Looper.java:136)
????????????at android.app.ActivityThread.main(ActivityThread.java:5158)
????????????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:796)
????????????at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
????????????at dalvik.system.NativeStart.main(Native Method)

EDIT

EDIT

toolbar.xml

toolbar.xml

<?xml version="1.0" encoding="utf-8"?>

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimaryDark"/>

activity_main.xml

activity_main.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity"
        tools:ignore="MergeRootFrame">

        <include android:id="@+id/toolbar" layout="@layout/toolbar" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/btn_feed_list_demo"
            android:text="@string/feed_list_demo"/>

    </RelativeLayout>

采纳答案by AruLNadhaN

Sorry Guys. I have solved this Issue long ago. I did a lot of changes. So I can't figure out which one does the trick.

Sorry Guys. I have solved this Issue long ago. I did a lot of changes. So I can't figure out which one does the trick.

  1. I have changed the id as suggested by Jared Burrows.

  2. Removed my support library and cleaned my project and Re added it.

  3. Go to File -> Invalidate Caches/Restart.

  1. I have changed the id as suggested by Jared Burrows.

  2. Removed my support library and cleaned my project and Re added it.

  3. Go to File -> Invalidate Caches/Restart.

Hope it works.

Hope it works.

This is how my code looks now

This is how my code looks now

activity.xml

activity.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <include
        android:id="@+id/toolbar_actionbar"
        layout="@layout/toolbar_default"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/toolbar_actionbar">

        <FrameLayout
            android:id="@+id/container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

        <fragment
            android:id="@+id/fragment_drawer"
            android:name="com.arul.anahy.drawer.NavigationDrawerFragment"
            android:layout_width="@dimen/navigation_drawer_width"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            app:layout="@layout/fragment_navigation_drawer"/>
    </android.support.v4.widget.DrawerLayout>
</RelativeLayout>

toolbar_default.xml

toolbar_default.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    style="@style/ToolBarStyle"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:minHeight="@dimen/abc_action_bar_default_height_material"/>

ToolBarStyle

ToolBarStyle

<style name="ToolBarStyle" parent="">
        <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
        <item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
 </style>

回答by Gudin

If you are using new androidximplementations, when typing Toolbar, the Studio will autocomplete it to android.support.v7.widget.Toolbar, but you should use androidx.appcompat.widget.Toolbarinstead, otherwise you will get this error.

If you are using new androidximplementations, when typing Toolbar, the Studio will autocomplete it to android.support.v7.widget.Toolbar, but you should use androidx.appcompat.widget.Toolbarinstead, otherwise you will get this error.

回答by mike.b93

I was able to solve this problem by replacing the following:

I was able to solve this problem by replacing the following:

In the Toolbar layout, replace everything which is like this:

In the Toolbar layout, replace everything which is like this:

android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"

with

with

android:minHeight="@dimen/abc_action_bar_default_height_material"
android:background="@color/myColor"

回答by Lubowa Enock

This happened to me when I tried to use my older code in new android with androidx implementations. change your XML definition to;

This happened to me when I tried to use my older code in new android with androidx implementations. change your XML definition to;

<androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorPrimary"
            android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
            app:titleTextColor="@android:color/white" />

then in your java code;

then in your java code;

import androidx.appcompat.widget.Toolbar;

回答by Guu

I have solved this Issue by this blog:http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html

I have solved this Issue by this blog:http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html

The problem is you use the wrong theme,you can choose theme that like Theme.AppCompat.NoActionBar, in my project,it works.

The problem is you use the wrong theme,you can choose theme that like Theme.AppCompat.NoActionBar, in my project,it works.

I hope to help you。

I hope to help you。

回答by iAviatorJose

I had the same issue as i was using the 23.2.0 version of AppCompat Library. I updated the suppport library to 23.2.1 and the problem was solved.

I had the same issue as i was using the 23.2.0 version of AppCompat Library. I updated the suppport library to 23.2.1 and the problem was solved.

This Issue of Toolbar has been resolved in 23.2.1

This Issue of Toolbar has been resolved in 23.2.1

回答by Jared Burrows

Please read this Google Blog post: http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html

Please read this Google Blog post: http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html

<android.support.v7.widget.Toolbar
    android:id="@+id/my_awesome_toolbar"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary" />

Also, you are giving it the same "ID" twice, please remove the "id" from your include:

Also, you are giving it the same "ID" twice, please remove the "id" from your include:

<include android:id="@+id/toolbar" layout="@layout/toolbar" />

回答by Pacific P. Regmi

I have fixed this problem by modifying app build.gradle file.

I have fixed this problem by modifying app build.gradle file.

For Gradle Plugin 2.0+

For Gradle Plugin 2.0+

 android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 }  

For Gradle Plugin 1.5

For Gradle Plugin 1.5

 android {  
   defaultConfig {  

     generatedDensities = []  
  }  

  aaptOptions {  
    additionalParameters "--no-version-vectors"  
  }  
 } 

回答by nmvictor

I face the same problem but that was after I had updated to appcompatv23.2.0. I tried all the above suggestions but dint work. Then I proceeded to my Gradle file and replaced:

I face the same problem but that was after I had updated to appcompatv23.2.0. I tried all the above suggestions but dint work. Then I proceeded to my Gradle file and replaced:

dependencies {
compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.android.support:design:23.2.0'

}

}

with:

with:

dependencies {
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:design:23.0.1'
}

Rebuild the project and the issue was gone. It could be an issue with app compact v23.2.0, hopefully a better solution coming up so we can work with the new update.

Rebuild the project and the issue was gone. It could be an issue with app compact v23.2.0, hopefully a better solution coming up so we can work with the new update.

Hope this helps. Thank you.

Hope this helps. Thank you.

回答by Randy

I know this is an old question, but I recently ran into this same issue. It ended up being a Proguard problem (when I set minifyEnabledto falseit stopped happening.)

I know this is an old question, but I recently ran into this same issue. It ended up being a Proguard problem (when I set minifyEnabledto falseit stopped happening.)

To stop it, with proguard enabled, I added the following to my proguard rules file, thanks to a solution I found elsewhere (after discovering that the problem was proguard)

To stop it, with proguard enabled, I added the following to my proguard rules file, thanks to a solution I found elsewhere (after discovering that the problem was proguard)

-dontwarn android.support.v7.**
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }

Not sure if they're necessary, but I also added these lines:

Not sure if they're necessary, but I also added these lines:

-keep class com.google.** { *; }
-keep interface com.google.** { *; }