Файл res/drawable/abc_ic_ab_back_material.xml из ресурса ресурса 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.access$700(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.access$700(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.access$700(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);
, тогда как это не произошло при 23.0.1
android design library 23.2.0
. Между тем, согласно этому журналу, я догадался, что этот drawable был удален с android design library 23.2.0
.
Итак, может кто-нибудь сказал мне, почему это происходит?
Ответы
Ответ 1
Думаю, вам нужно внести изменения в gradle
.
// Gradle Plugin 2.0+
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
Вы отметите, что этот новый атрибут существует только в версии 2.0 плагина Gradle. Если вы используете Gradle 1,5, вы вместо этого используете
// Gradle Plugin 1.5
android {
defaultConfig {
// Stops the Gradle plugin 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.
Надеюсь, это поможет вам.
Ответ 2
В соответствии с документацией библиотеки поддержки Google для 24.0.0
они изменили векторную библиотеку с возможностью рисования до того, что было до этого:
Добавлен метод AppCompatDelegate.setCompatVectorFromResourcesEnabled()
для повторного включения использования векторных чертежей в объектах DrawableContainer
на устройствах под управлением Android 4.4 (API уровня 19) и ниже. См. AppCompat v23.2 - Возраст векторов! для получения дополнительной информации.
Я столкнулся с той же проблемой, и мои стилисты SVG, используемые в моем проекте, отлично работали до устройств Marshmallow.
Позже, когда я получил крах за то же самое в Android N, я понял, что svgs немного испорчены и содержат символы вроде:, и это вызвало сбой.
Но это не отразилось на Android Marshmallow и предыдущих устройствах.
Убедитесь, что ваш векторный чертеж не содержит ни одного из этих символов, поскольку способ анализа был изменен из библиотеки 24.0.0. Таким образом, векторные чертежи, работающие нормально, пока Marshmallow не будут работать в устройствах Nougat.
Надеюсь, что это поможет:)
Ответ 3
Я решаю эту проблему, обновляя мою библиотеку поддержки из
'com.android.support:appcompat-v7:23.2.0'
'com.android.support:design:23.2.0'
к тем же зависимостям 23.2.1
.
Когда я столкнулся с проблемой, я не внес никаких изменений в свой модуль, созданный Android Studio.
Итак, я был настолько смущен, что попытался обновить библиотеку поддержки Android.
После обновления, пожалуйста, помните, обновите свой build.gradle
Ответ 4
Я решил проблему следующим образом:
Попробуйте сменить 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, но без проблемы с панелью действий.
Ответ 5
Это сработало для меня: замените версию com.android.support:design
на build.gradle
на ту, которая работает. Найдите, какая версия работает, создав новый проект с нуля в Android Studio и используя версию из этого.
У меня возникла эта проблема, когда я добавил активность навигационного ящика из меню Файл → Новое → Деятельность в более старый проект с Android Studio.
Android Studio добавила зависимость так:
compile 'com.android.support:design:24.0.0-alpha1'
(Я не уверен в точной версии, но у нее были "24" и "альфа" ).
Затем я создал новый фиктивный проект, указав действие навигационного ящика в новом проекте. Я заметил, что новый проект имел другую зависимость: compile 'com.android.support:design:23.2.1'
Итак, я взял эту зависимость и поместил ее в первый проект, и проблема была решена.
Ответ 6
Источник - http://android-developers.blogspot.in/2016/02/android-support-library-232.html
при использовании AppCompat с ImageView (или подклассами, такими как ImageButton и FloatingActionButton), вы сможете использовать новое приложение: srcCompat атрибут к ссылочным векторам (как и любые другие доступные доступно для android: src):
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_add" />
где вы можете определить свое приложение в корневом элементе как
XMLNS: приложение = "http://schemas.android.com/apk/res-auto"
Ответ 7
У меня была эта проблема, потому что у моего файла манифеста был стиль, который был определен только в стиле v21. Не уверен, почему он указывал на этот тип ошибок, но кто-то может найти это полезным.