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
Error inflating class android.support.v7.widget.Toolbar?
提问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.
I have changed the id as suggested by Jared Burrows.
Removed my support library and cleaned my project and Re added it.
Go to File -> Invalidate Caches/Restart.
I have changed the id as suggested by Jared Burrows.
Removed my support library and cleaned my project and Re added it.
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.Toolbar
instead, 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.Toolbar
instead, 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 minifyEnabled
to false
it 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 minifyEnabled
to false
it 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.** { *; }