2017-12-29 6 views
3

Ich bin nicht sicher, warum ich diesen Fehler nur bei bestimmten Android-Versionen (unter 5.0) bekomme.NoSuchMethodError auf bestimmten Betriebssystemversionen

Ich rufe:

myImageView.setImageDrawable(getResources().getDrawable(R.drawable.image, null)); 

Aus diesem Grund bin ich ein NoSuchMethodError bekommen.
Was ist zu tun?

+0

Sie einfach Ihren Kontext vor getDrawable add() YOURCONTEXT.getResources(). getDrawable (R.drawable.image, null) –

Antwort

7

verwenden

myImageView.setImageDrawable(ContextCompat.getDrawable(this,R.drawable.image)); 

Statt dieser

myImageView.setImageDrawable(getResources().getDrawable(R.drawable.image, null)); 

EDIT

wenn Sie setImageDrawable(getResources().getDrawable(R.drawable.image, null)); verwenden diese wird es zeigt unter Fehler

enter image description here

HINWEISsetImageDrawable(getResources().getDrawable(R.drawable.image, null)); dieses Verfahren in API-Ebene hinzugefügt 21

Sie mehr über ContextCompat

+1

Ok, ich verstehe! Danke – Someday

+0

@Someday glücklich, Ihnen zu helfen – Prem

1

@Prem Antwort lesen kann, ist die richtige. Fügen Sie das einfach hinzu, um Ihnen einen Tipp zu geben.

In Android-Dokumentation gibt es eine Angabe, welche API-Ebene jede Methode enthalten. Zum Beispiel wurde the one you're using in Android 5.0 eingeführt (API Level 21).

API documentation example

1

Sie rufen getResources().getDrawable(R.drawable.image, null) Methode, die in API-Ebene hinzugefügt wird 21

Scheck Android docs

Wenn Sie zweiten Parameter verwenden (Thema) als null

So versuchen zu verwenden

getResources().getDrawable(R.drawable.image); 

Sie können folgenden Code für die gleiche

myImageView.setImageDrawable(getResources().getDrawable(R.drawable.image)); 
2

Verwenden ContextCompat, es ist Helper-Klasse für den Zugriff auf Funktionen in Context verwenden.

Mit dieser Klasse, die Sie einfach die folgenden Ressourcen zugreifen können,

  • ImageDrawable
  • String
  • Farbe
  • ColorStateList
  • CodeCacheDir

A nd vieles mehr ...

Versuchen durch folgende Art und Weise,

myImageView.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.image)); 
Verwandte Themen