来自可绘制资源 ID #0x7f020016 的文件 res/drawable/abc_ic_ab_back_material.xml
File res/drawable/abc_ic_ab_back_material.xml from drawable resource ID #0x7f020016
最近 android support library
更新为 23.2.0
。下载 android sdk 并将 android 设计支持库更新为 23.2.0
后,此错误反复出现。我的项目甚至无法编译。完整的错误日志说:
03-02 12:00:04.945 9324-9324/com.creditease.zhiwang.debug E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.creditease.zhiwang.debug/com.creditease.zhiwang.activity.TabContainerActivity}: android.content.res.Resources$NotFoundException: File res/drawable/abc_ic_ab_back_material.xml from drawable resource ID #0x7f020016
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2309)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
at android.app.ActivityThread.access0(ActivityThread.java:169)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1330)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5528)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/abc_ic_ab_back_material.xml from drawable resource ID #0x7f020016
at android.content.res.Resources.loadDrawable(Resources.java:2974)
at android.content.res.Resources.getDrawable(Resources.java:1558)
at android.support.v7.widget.TintResources.superGetDrawable(TintResources.java:48)
at android.support.v7.widget.AppCompatDrawableManager.onDrawableLoadedFromResources(AppCompatDrawableManager.java:374)
at android.support.v7.widget.TintResources.getDrawable(TintResources.java:44)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:323)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:180)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
at android.support.v7.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:184)
at android.support.v7.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:91)
at android.support.v7.app.ToolbarActionBar.<init>(ToolbarActionBar.java:74)
at android.support.v7.app.AppCompatDelegateImplV7.setSupportActionBar(AppCompatDelegateImplV7.java:210)
at android.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:119)
at com.creditease.zhiwang.activity.BaseActivity.initToolBar(BaseActivity.java:300)
at com.creditease.zhiwang.activity.BaseActivity.initToolBar(BaseActivity.java:265)
at com.creditease.zhiwang.activity.TabContainerActivity.onCreate(TabContainerActivity.java:107)
at android.app.Activity.performCreate(Activity.java:5372)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2271)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
at android.app.ActivityThread.access0(ActivityThread.java:169)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1330)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5528)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025)
at dalvik.system.NativeStart.main(Native Method)
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #17: invalid drawable tag vector
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:933)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:873)
at android.content.res.Resources.loadDrawable(Resources.java:2970)
at android.content.res.Resources.getDrawable(Resources.java:1558)
at android.support.v7.widget.TintResources.superGetDrawable(TintResources.java:48)
at android.support.v7.widget.AppCompatDrawableManager.onDrawableLoadedFromResources(AppCompatDrawableManager.java:374)
at android.support.v7.widget.TintResources.getDrawable(TintResources.java:44)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:323)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:180)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
at android.support.v7.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:184)
at android.support.v7.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:91)
at android.support.v7.app.ToolbarActionBar.<init>(ToolbarActionBar.java:74)
at android.support.v7.app.AppCompatDelegateImplV7.setSupportActionBar(AppCompatDelegateImplV7.java:210)
at android.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:119)
at com.creditease.zhiwang.activity.BaseActivity.initToolBar(BaseActivity.java:300)
at com.creditease.zhiwang.activity.BaseActivity.initToolBar(BaseActivity.java:265)
at com.creditease.zhiwang.activity.TabContainerActivity.onCreate(TabContainerActivity.java:107)
at android.app.Activity.performCreate(Activity.java:5372)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2271)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
at android.app.ActivityThread.access0(ActivityThread.java:169)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1330)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5528)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025)
at dalvik.system.NativeStart.main(Native Method)
此错误是由 setSupportActionBar(toolbar);
引发的,而它并未发生在 android design library 23.2.0
的 23.0.1
。同时根据这个日志,我猜这个 drawable 自 android design library 23.2.0
.
后被删除了
那么,有人能告诉我为什么会这样吗?
我认为您需要对 gradle
进行更改。
// Gradle Plugin 2.0+
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
您会注意到此新属性仅存在于 Gradle 插件的 2.0 版中。如果您使用的是 Gradle 1.5,您将改为使用
// Gradle Plugin 1.5
android {
defaultConfig {
// Stops the Gradle plugin's automatic rasterization of vectors
generatedDensities = []
}
// Flag to tell aapt to keep the attribute ids around
// This is handled for you by the 2.0+ Gradle Plugin
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
我发现了类似的问题 。
请参阅 Android 支持库更新中的 Support Vector Drawables and Animated Vector Drawables。
希望对你有帮助。
我通过从
更新我的支持库来解决这个问题
'com.android.support:appcompat-v7:23.2.0'
'com.android.support:design:23.2.0'
到 23.2.1
的相同依赖项。
当我遇到这个问题时,我没有对 Android Studio 构建的模块进行任何更改。
所以我很困惑然后我尝试更新 android 支持库。
更新后,请记得同步您的build.gradle
这对我有用:将 build.gradle
中的 com.android.support:design
版本替换为有效的版本。通过在 Android Studio 中从头开始创建一个新项目并使用其中的版本来查找哪个版本有效。
我从 File->New->[= 添加导航抽屉 Activity 时遇到了这个问题24=]Activity 菜单到 Android Studio 的旧项目。
Android Studio 添加了如下依赖项:
compile 'com.android.support:design:24.0.0-alpha1'
(我不确定确切的版本,但它有“24”和 'alpha')。
然后我创建了一个新的虚拟项目,在新项目向导中指定了一个导航抽屉 Activity。我注意到新项目有不同的依赖关系:compile 'com.android.support:design:23.2.1'
于是我就把这个依赖放到了第一个项目中,问题就解决了
我解决问题如下:
尝试将 styles.xml 更改为
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
这是因为如果样式需要 ActionBar,则有可能找不到 abc_back 按钮,但没有操作栏的问题已解决
我遇到这个问题是因为我的 Manifest 文件具有仅在 v21 样式中定义的样式。不确定它为什么指向此类错误,但有人可能会发现这很有帮助。
来源 - http://android-developers.blogspot.in/2016/02/android-support-library-232.html
when using AppCompat with ImageView (or subclasses such as ImageButton
and FloatingActionButton), you’ll be able to use the new app:srcCompat
attribute to reference vector drawables (as well as any other drawable
available to android:src):
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_add" />
您可以在其中将根元素中的 app 定义为
xmlns:app="http://schemas.android.com/apk/res-auto"
根据 Google 对 24.0.0
的支持库的文档,他们已将矢量可绘制库更改为之前的内容:
添加了 AppCompatDelegate.setCompatVectorFromResourcesEnabled()
方法以在 运行 Android 4.4(API 级别 19)及更低设备上的 DrawableContainer
对象中重新启用矢量绘图。参见 AppCompat v23.2 — Age of the vectors!获取更多信息。
我遇到了同样的问题,我的项目中使用的 SVG 状态列表可绘制对象在 Marshmallow 设备之前工作正常。
后来当我在 Android N 中遇到同样的崩溃时,我意识到 svgs 有点损坏并且包含如下字符:� 而这导致了崩溃。
但这些并未反映在 Android Marshmallow 和之前的设备中。
确保您的矢量可绘制对象不包含任何这些字符,因为解析方式已从库 24.0.0 更改。所以矢量绘图工作正常,直到 Marshmallow 可能无法在 Nougat 设备中工作。
希望这对您有所帮助:)
最近 android support library
更新为 23.2.0
。下载 android sdk 并将 android 设计支持库更新为 23.2.0
后,此错误反复出现。我的项目甚至无法编译。完整的错误日志说:
03-02 12:00:04.945 9324-9324/com.creditease.zhiwang.debug E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.creditease.zhiwang.debug/com.creditease.zhiwang.activity.TabContainerActivity}: android.content.res.Resources$NotFoundException: File res/drawable/abc_ic_ab_back_material.xml from drawable resource ID #0x7f020016
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2309)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
at android.app.ActivityThread.access0(ActivityThread.java:169)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1330)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5528)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/abc_ic_ab_back_material.xml from drawable resource ID #0x7f020016
at android.content.res.Resources.loadDrawable(Resources.java:2974)
at android.content.res.Resources.getDrawable(Resources.java:1558)
at android.support.v7.widget.TintResources.superGetDrawable(TintResources.java:48)
at android.support.v7.widget.AppCompatDrawableManager.onDrawableLoadedFromResources(AppCompatDrawableManager.java:374)
at android.support.v7.widget.TintResources.getDrawable(TintResources.java:44)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:323)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:180)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
at android.support.v7.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:184)
at android.support.v7.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:91)
at android.support.v7.app.ToolbarActionBar.<init>(ToolbarActionBar.java:74)
at android.support.v7.app.AppCompatDelegateImplV7.setSupportActionBar(AppCompatDelegateImplV7.java:210)
at android.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:119)
at com.creditease.zhiwang.activity.BaseActivity.initToolBar(BaseActivity.java:300)
at com.creditease.zhiwang.activity.BaseActivity.initToolBar(BaseActivity.java:265)
at com.creditease.zhiwang.activity.TabContainerActivity.onCreate(TabContainerActivity.java:107)
at android.app.Activity.performCreate(Activity.java:5372)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2271)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
at android.app.ActivityThread.access0(ActivityThread.java:169)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1330)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5528)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025)
at dalvik.system.NativeStart.main(Native Method)
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #17: invalid drawable tag vector
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:933)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:873)
at android.content.res.Resources.loadDrawable(Resources.java:2970)
at android.content.res.Resources.getDrawable(Resources.java:1558)
at android.support.v7.widget.TintResources.superGetDrawable(TintResources.java:48)
at android.support.v7.widget.AppCompatDrawableManager.onDrawableLoadedFromResources(AppCompatDrawableManager.java:374)
at android.support.v7.widget.TintResources.getDrawable(TintResources.java:44)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:323)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:180)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
at android.support.v7.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:184)
at android.support.v7.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:91)
at android.support.v7.app.ToolbarActionBar.<init>(ToolbarActionBar.java:74)
at android.support.v7.app.AppCompatDelegateImplV7.setSupportActionBar(AppCompatDelegateImplV7.java:210)
at android.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:119)
at com.creditease.zhiwang.activity.BaseActivity.initToolBar(BaseActivity.java:300)
at com.creditease.zhiwang.activity.BaseActivity.initToolBar(BaseActivity.java:265)
at com.creditease.zhiwang.activity.TabContainerActivity.onCreate(TabContainerActivity.java:107)
at android.app.Activity.performCreate(Activity.java:5372)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2271)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
at android.app.ActivityThread.access0(ActivityThread.java:169)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1330)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5528)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025)
at dalvik.system.NativeStart.main(Native Method)
此错误是由 setSupportActionBar(toolbar);
引发的,而它并未发生在 android design library 23.2.0
的 23.0.1
。同时根据这个日志,我猜这个 drawable 自 android design library 23.2.0
.
那么,有人能告诉我为什么会这样吗?
我认为您需要对 gradle
进行更改。
// Gradle Plugin 2.0+
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
您会注意到此新属性仅存在于 Gradle 插件的 2.0 版中。如果您使用的是 Gradle 1.5,您将改为使用
// Gradle Plugin 1.5
android {
defaultConfig {
// Stops the Gradle plugin's automatic rasterization of vectors
generatedDensities = []
}
// Flag to tell aapt to keep the attribute ids around
// This is handled for you by the 2.0+ Gradle Plugin
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
我发现了类似的问题
请参阅 Android 支持库更新中的 Support Vector Drawables and Animated Vector Drawables。 希望对你有帮助。
我通过从
更新我的支持库来解决这个问题'com.android.support:appcompat-v7:23.2.0'
'com.android.support:design:23.2.0'
到 23.2.1
的相同依赖项。
当我遇到这个问题时,我没有对 Android Studio 构建的模块进行任何更改。
所以我很困惑然后我尝试更新 android 支持库。
更新后,请记得同步您的build.gradle
这对我有用:将 build.gradle
中的 com.android.support:design
版本替换为有效的版本。通过在 Android Studio 中从头开始创建一个新项目并使用其中的版本来查找哪个版本有效。
我从 File->New->[= 添加导航抽屉 Activity 时遇到了这个问题24=]Activity 菜单到 Android Studio 的旧项目。
Android Studio 添加了如下依赖项:
compile 'com.android.support:design:24.0.0-alpha1'
(我不确定确切的版本,但它有“24”和 'alpha')。
然后我创建了一个新的虚拟项目,在新项目向导中指定了一个导航抽屉 Activity。我注意到新项目有不同的依赖关系:compile 'com.android.support:design:23.2.1'
于是我就把这个依赖放到了第一个项目中,问题就解决了
我解决问题如下: 尝试将 styles.xml 更改为
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
这是因为如果样式需要 ActionBar,则有可能找不到 abc_back 按钮,但没有操作栏的问题已解决
我遇到这个问题是因为我的 Manifest 文件具有仅在 v21 样式中定义的样式。不确定它为什么指向此类错误,但有人可能会发现这很有帮助。
来源 - http://android-developers.blogspot.in/2016/02/android-support-library-232.html
when using AppCompat with ImageView (or subclasses such as ImageButton and FloatingActionButton), you’ll be able to use the new app:srcCompat attribute to reference vector drawables (as well as any other drawable available to android:src):
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_add" />
您可以在其中将根元素中的 app 定义为
xmlns:app="http://schemas.android.com/apk/res-auto"
根据 Google 对 24.0.0
的支持库的文档,他们已将矢量可绘制库更改为之前的内容:
添加了 AppCompatDelegate.setCompatVectorFromResourcesEnabled()
方法以在 运行 Android 4.4(API 级别 19)及更低设备上的 DrawableContainer
对象中重新启用矢量绘图。参见 AppCompat v23.2 — Age of the vectors!获取更多信息。
我遇到了同样的问题,我的项目中使用的 SVG 状态列表可绘制对象在 Marshmallow 设备之前工作正常。
后来当我在 Android N 中遇到同样的崩溃时,我意识到 svgs 有点损坏并且包含如下字符:� 而这导致了崩溃。
但这些并未反映在 Android Marshmallow 和之前的设备中。
确保您的矢量可绘制对象不包含任何这些字符,因为解析方式已从库 24.0.0 更改。所以矢量绘图工作正常,直到 Marshmallow 可能无法在 Nougat 设备中工作。
希望这对您有所帮助:)