2017-05-17 6 views
1

Salut Im essayant d'utiliser un xml vecotr comme dessinable dans mon application et tout fonctionne bien dans API 25 mais quand je l'essaie sur API 16, je reçois cette erreur. Je reçois l'erreur uniquement lorsque j'essaie de charger le vecteur par programmation, lorsque je l'utilise dans la mise en page en tant qu'arrière-plan ImageView, je ne reçois pas l'erreur.Android ResourceNotFound lors de l'utilisation de XML xml comme dessinable API 16

java.lang.RuntimeException: Unable to start activity ComponentInfo{.....Editor}: android.content.res.Resources$NotFoundException: File res/drawable/chevron_left.xml from drawable resource ID #0x7f02005c 
                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 
                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
                     at android.app.ActivityThread.access$600(ActivityThread.java:130) 
                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
                     at android.os.Handler.dispatchMessage(Handler.java:99) 
                     at android.os.Looper.loop(Looper.java:137) 
                     at android.app.ActivityThread.main(ActivityThread.java:4745) 
                     at java.lang.reflect.Method.invokeNative(Native Method) 
                     at java.lang.reflect.Method.invoke(Method.java:511) 
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                     at dalvik.system.NativeStart.main(Native Method) 
                    Caused by: android.content.res.Resources$NotFoundException: File res/drawable/chevron_left.xml from drawable resource ID #0x7f02005c 
                     at android.content.res.Resources.loadDrawable(Resources.java:1923) 
                     at android.content.res.Resources.getDrawable(Resources.java:659) 
                     at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:374) 
                     at com...........Editor.onCreate(Editor.java:84) 
                     at android.app.Activity.performCreate(Activity.java:5008) 
                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)  
                     at android.app.ActivityThread.access$600(ActivityThread.java:130)  
                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)  
                     at android.os.Handler.dispatchMessage(Handler.java:99)  
                     at android.os.Looper.loop(Looper.java:137)  
                     at android.app.ActivityThread.main(ActivityThread.java:4745)  
                     at java.lang.reflect.Method.invokeNative(Native Method)  
                     at java.lang.reflect.Method.invoke(Method.java:511)  
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)  
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)  
                     at dalvik.system.NativeStart.main(Native Method)  
                    Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #2: invalid drawable tag vector 
                     at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:877) 
                     at android.graphics.drawable.Drawable.createFromXml(Drawable.java:818) 
                     at android.content.res.Resources.loadDrawable(Resources.java:1920) 
                     at android.content.res.Resources.getDrawable(Resources.java:659)  
                     at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:374)  
                     at com...........Editor.onCreate(Editor.java:84)  
                     at android.app.Activity.performCreate(Activity.java:5008)  
                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)  
                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)  
                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)  
                     at android.app.ActivityThread.access$600(ActivityThread.java:130)  
                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)  
                     at android.os.Handler.dispatchMessage(Handler.java:99)  
                     at android.os.Looper.loop(Looper.java:137)  
                     at android.app.ActivityThread.main(ActivityThread.java:4745)  
                     at java.lang.reflect.Method.invokeNative(Native Method)  
                     at java.lang.reflect.Method.invoke(Method.java:511)  
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)  
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)  
                     at dalvik.system.NativeStart.main(Native Method)  

et dans le Editor.java (étend AppCompatActivity) J'ai essayé deux (les deux n'a pas travaillé):

Drawable upArrow=getResources().getDrawable(R.drawable.chevron_left); 
    Drawable upArrow = ContextCompat.getDrawable(this, R.drawable.chevron_left).getCurrent(); 

Vector chevron_left.xml:

<!-- drawable/chevron_left.xml --> 
<vector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:height="42dp" 
    android:width="42dp" 
    android:viewportWidth="24" 
    android:viewportHeight="24"> 
    <path android:fillColor="#fff" android:pathData="M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z" /> 
</vector> 

Gradle:

defaultConfig { 
    applicationId "com....." 
    minSdkVersion 16 
    targetSdkVersion 25 
    versionCode 1 
    versionName "1.0" 
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    vectorDrawables.useSupportLibrary = true 
    multiDexEnabled true 
} 

compile 'com.android.support:support-v4:25.3.1' 
compile 'com.android.support:support-vector-drawable:25.3.1' 
compile 'com.android.support:appcompat-v7:25.3.1' 

Répondre

2

Il suffit d'appliquer Fals e à vectorDrawables.useSupportLibrary à false. Comme ceci: -

vectorDrawables.useSupportLibrary = false 

La raison est dessinable de vecteur ne fonctionne pas pour apis ci-dessous la sucette. Il y a quelques problèmes avec cela. Mais vous pouvez déclarer vector drawable & et pouvez utiliser ci-dessous la version de sucette mais vous devez définir useSupportLibrary à faux afin que le studio android va créer le fichier png pour vous :)

+1

Merci cela a fonctionné – Ares91