Android-getResources().getDrawable() deprecated API-22
Mit neuen android-API 22 getResources().getDrawable()
ist jetzt veraltet.
Jetzt ist der beste Ansatz ist die Verwendung von nur getDrawable()
.
Was geändert?
Können Sie Ihre Frage? Es ist richtig, dass die Methode
ContextCompat.getDrawable(context, R. Farbe.color_name)
Sie können check out my blog post - zu diesem Thema eine ausführliche Erklärung darüber, warum die beiden
Google sollte quick-fixes für jedes veraltet-Funktion. Ich habe einen Beitrag über Sie hier: code.google.com/p/android/issues/detail?id=219495
getDrawable (int id)
von der Klasse Resources
ist veraltet. Sie sollte jetzt mit der Methode getDrawable (int id, Resources.Theme theme)
mit dem neuen theme-parameter.ContextCompat.getDrawable(context, R. Farbe.color_name)
Sie können check out my blog post - zu diesem Thema eine ausführliche Erklärung darüber, warum die beiden
Resources#getDrawable(int)
und Resources#getColor(int)
waren veraltet.Google sollte quick-fixes für jedes veraltet-Funktion. Ich habe einen Beitrag über Sie hier: code.google.com/p/android/issues/detail?id=219495
InformationsquelleAutor Blodhgard | 2015-03-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie einige Optionen zum Umgang mit dieser Streichung das Recht (und zukunftssichere) Weise, je nach der Art drawable, das Sie einlegen:
A) drawables mit Thema Attribute
Sie erhalten einen Stil Drawable als Ihre Aktivität Thema beauftragt.
Dies ist wahrscheinlich das, was Sie brauchen.
B) drawables ohne Thema Attribute
Erhalten Sie Ihre unstyled drawable den alten Weg. Bitte beachten Sie:
ResourcesCompat.getDrawable()
ist nicht veraltet!EXTRA) drawables mit Thema Attribute aus anderen Thema
Meine app stürzt über Vorschlag B. Sie mag Es nicht, den Anruf Drawable originalIcon = ResourcesCompat.getDrawable(ctxt.getResources(), iconResId, null);
Ich erkläre es mal so: public static void setImageButtonEnabled(Context ctxt, boolean aktiviert, ImageButton Element, int iconResId) { Element.setEnabled(enabled); Drawable originalIcon = ResourcesCompat.getDrawable(ctxt.getResources(), iconResId, null); Drawable-Symbol = aktiviert ? originalIcon : convertDrawableToGrayScale(originalIcon); item.setImageDrawable(Symbol); } und rufen Sie es wie folgt: - Dienstprogramms.setImageButtonEnabled(getContext(), false, zurück, R. drawable.arrow_left);
Genauer gesagt, der Absturz passiert zu sein scheint, denn mein Zeichen ist ein Vektor-drawable.
xamarin-version: ResourcesCompat.GetDrawable(Ressourcen, Ressource.Drawable.name, null);
InformationsquelleAutor araks
Edit: siehe mein blog-post auf das Thema für eine ausführlichere Erklärung
Verwenden Sie den folgenden code aus der support library statt:
Dieser Methode ist äquivalent zum Aufruf:
Als der API-21, die Sie verwenden sollten, die
getDrawable(int, Theme)
Methode stattgetDrawable(int)
, da es Ihnen erlaubt, zu Holen ein drawable-Objekt mit einem bestimmten Ressourcen-ID für den angegebenen Bildschirm Dichte/Thema. Aufruf der deprecatedgetDrawable(int)
Methode ist äquivalent zum AufrufgetDrawable(int, null)
.getDrawable (int id)
Methode derContext
Klasse. Dies ist das gleiche wiegetResources().getDrawable(id, getTheme());
und nutzt auch die neue API.Gemäß der Dokumentation, min API level 21 ist erforderlich, um
getDrawable(int, Resources.Theme)
.Die Methode wurde Hinzugefügt, in der API-21, aber es war nicht veraltet, bis API-22. 🙂
Dies fügt nur auf Zeilen zu meinem code. Hasserfüllt!
Android doc empfiehlt auch, mit Kontext::getDrawable(int) - Methode, aber, da es wurde nur in API-21 scheint, dass ContextCompat ist die beste Wahl.
InformationsquelleAutor Alex Lockwood
Ersetzen Sie diese Zeile :
getResources().getDrawable(R.drawable.your_drawable)
mit
ResourcesCompat.getDrawable(getResources(), R.drawable.your_drawable, null)
BEARBEITEN
ResourcesCompat
ist auch veraltet jetzt. Aber Sie können diese verwenden:ContextCompat.getDrawable(this, R.drawable.your_drawable)
(Hierthis
ist der Kontext)für mehr details Folgen Sie diesem link: ContextCompat
finden Sie unter dieser link bitte : developer.android.com/reference/android/support/v4/content/..., int)
ResourcesCompat.getDrawable() ist NICHT veraltet!!! Bitte Lesen Sie meine Antwort weiter unten!
Es sagt nicht, in link, dass
ResourcesCompat
ist veraltet. Es sollte gut funktionieren.was Sie schreiben in "Ihrer drawable" wenn ich will, um input-Bilder, um eine Liste nach anklicken der Liste gespeicherten Elemente in drawable
InformationsquelleAutor vincent091
getResources().getDrawable()
war veraltet in der API-Ebene 22. Jetzt müssen wir hinzufügen, mit dem Thema:getDrawable (int id, Ressourcen.Des Themas) (Hinzugefügt in API-level 21)
Dies ist ein Beispiel:
Dies ist ein Beispiel, wie Sie überprüfen für spätere Versionen:
Build.VERSION_CODES.LOLLIPOP is API 21
, so sollte dies nicht seinif (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1)
oderif (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP)
? Nie Verstand. Von unten "Die Methode wurde Hinzugefügt, in der API-21, aber es war nicht veraltet, bis API-22. :)"InformationsquelleAutor Elenasys
Können Sie
dass die Arbeit für mich
Ich erinnere mich nicht an meine Prüfung für den code mit lollipop Fall, aber Sie können versuchen, getActivity() oder getResources (), anstatt dann, ob das gut geht mit deinem code ?
Ich verwende MVVM-Muster und ich müssen zum aufblasen drawables innen ViewModels, die keine Aktivität Kontext. Er hat nur die Anwendung Kontext. Das ist, was mein Problem ist.
InformationsquelleAutor Dasser Basyouni
Nur ein Beispiel, wie ich das problem behoben in ein array zu laden, listView, hoffe es hilft.
InformationsquelleAutor Jay
Versuchen Sie dies:
Während dieser code kann die Frage beantworten, die zusätzliche Bereitstellung von Kontext in Bezug auf, warum und/oder wie dieser code beantwortet die Frage, verbessert seine langfristige Wert.
InformationsquelleAutor syakirin mohd nor
en api level 14
InformationsquelleAutor Jaime López Romero
Bauen.VERSION_CODES.LOLLIPOP soll nun geändert werden, um BuildVersionCodes.Lollipop
ich.e:
BuildVersionCodes
eine spezifische Klasse von Xamarin?InformationsquelleAutor Ryan Herman
Wenn Sie auf SDK - > 21 (lollipop oder 5.0) verwenden
Siehe docs
InformationsquelleAutor Adeel Ahmad
Nun müssen Sie implementieren, wie dies
Folgende Zeile code reicht, wird alles kümmern ContextCompat.getDrawable
InformationsquelleAutor Farid Haq