Подтвердить что ты не робот

Файл 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.

Итак, может кто-нибудь сказал мне, почему это происходит?

4b9b3361

Ответ 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. Не уверен, почему он указывал на этот тип ошибок, но кто-то может найти это полезным.