2016-04-18 10 views
0

Was ich habe schon:ResourcesNotFoundException für Pre-Lutscher Geräte

Das ist mein Image:

<ImageView 
     android:id="@+id/play_pause" 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/timer_button_layoutHeight" 
     app:srcCompat="@drawable/play_button_vector" 
     android:onClick="startOrPauseTimer"/> 

Ich bin mit Android Plugin-Version 2.0:

classpath 'com.android.tools.build:gradle:2.0.0' 

Ich habe das Flag für die Unterstützung der Vektorbibliothek in der Standardkonfiguration von Android in der App-Ebene build.gradle aktiviert:

vectorDrawables.useSupportLibrary = true 

Ich habe auch die Vektor-ziehbar Support-Bibliothek Abhängigkeit hinzugefügt:

compile 'com.android.support:support-vector-drawable:23.2.1' 

In der Aktivitätsklasse, bin ich ändert dynamisch den Vektor ziehbar basierend auf Klick Zuhörer:

playPauseButton = (ImageView) findViewById(R.id.play_pause); 
playPauseButton.setImageResource(R.drawable.play_button_vector); 

Das Problem:

Ich bekomme Ressource nicht gefunden Ausnahme in pre-loll IPOP-Geräte. Der Code funktioniert ab Lollipop gut.

android.content.res.Resources $ NotFoundException: Datei res/ziehbar/play_button_vector.xml von ziehbar Ressource ID # 0x7f020119

ich nichts an dem Ort sehen, wo das Bild sein soll. Wenn ich jedoch auf den Ort klicke, an dem das Bild sein soll, wird es vom clickListener abgefangen. Was mache ich falsch?

+0

Sie konvertieren alle 'SVG' in Vektor? –

+0

yeah, ich habe die SVG-Datei erhalten und diese dann als Vektor-Zeichensatz importiert. –

+0

Verwenden Sie stattdessen den Standardvektor. Tun von SVG gibt auch in meinem Fall Fehler. Für den Standardvektor funktioniert es ohne all die oben genannten Dinge, die Sie ausprobiert haben. –

Antwort

1

Laut einem kürzlich erschienenen Beitrag von Android Developers,

Für AppCompat Benutzer, haben wir beschlossen, die Funktionalität zu entfernen, die Sie Drawables von Ressourcen auf Pre-Lollipop-Geräte verwenden Vektor lassen aufgrund von Problemen in der gefunden Implementierung in Version 23.2.0/23.2.1 https://code.google.com/p/android/issues/detail?id=205236. Die Verwendung von app: srcCompat und setImageResource() funktioniert weiterhin.

Quelle: https://plus.google.com/+AndroidDevelopers/posts/iTDmFiGrVne

+1

Also ich denke, wir sind wieder auf Png: / –

1

Versuchen Sie diese statt ContextCompat.getDrawable().

Drawable d = AppCompatDrawableManager.get().getDrawable(context, resID); 
0

Ich habe alle oben genannten Lösungen ausprobiert. Nichts hat für mich funktioniert. Die einzige Sache, die für mich funktionierte, ist sehr einfach, alle Unterstützungsbibliotheken auf die neueste Version zu aktualisieren, da dieser Fehler darin behoben wurde. Also habe ich einfach die folgende Sache in Build, dass Gradle aktualisiert SDK und Unterstützung zu 25.

android { 
    compileSdkVersion 25 
    buildToolsVersion "25" 
    defaultConfig { 
     targetSdkVersion 25 
    } 

} 
In dependencies 

    compile 'com.android.support:appcompat-v7:25.1.0' 
    compile 'com.android.support:design:25.1.0' 
    compile 'com.android.support:recyclerview-v7:25.1.0'