2012-11-05 2 views
23

Ich wollte view.setBackgroundDrawable(Drawable) verwenden, aber diese Methode ist deprecated. Es wird ersetzt durch .setBackground(Drawable). Aber mein Minimum von API 8 kann damit nicht umgehen. Es sagt mir, das Minimum auf API 16 zu setzen.Veraltete Methode, aber ersetzen Methode erfordert höhere API

Gibt es eine Möglichkeit, eine andere Methode zu verwenden, basierend auf der API des Geräts?

So etwas wie

if(API<16) 
{ 
    view.setBackgroundDrawable(Drawable) 
} 
else 
{ 
    view.setBackground(Drawable) 
} 

Oder ich wirklich das Minimum API, dies zu tun ändern?

Antwort

39

setBackgroundDrawable ist veraltet, aber es funktioniert immer noch, so dass Sie es einfach verwenden könnten. Aber wenn Sie ganz korrekt sein wollen, sollten Sie so etwas wie dieses

int sdk = android.os.Build.VERSION.SDK_INT; 
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) { 
    setBackgroundDrawable() 
} else { 
    setBackground(); 
} 

Dazu verwenden Sie buildTarget api 16 einstellen müssen funktionieren und min bauen bis 7 oder etwas ähnliches.

+3

In diesem Code ... wird die Warnung noch angezeigt werden, können Sie Warnungen verwenden unterdrücken, sie zu entfernen! – Antrromet

+3

Eigentlich brauche ich beides: @SuppressLint („NewApi“) \t \t @SuppressWarnings („deprecation“) – Niels

+0

Ja, ich habe vergessen, die Flusen Warnungen – Antrromet

5

Sie können verschiedene Methoden basierend auf den API-Versionen verwenden.

Für z:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) { 
     //Methods for version <8 (FROYO) 
} else { 
     // Methods for version >=8 
} 

Hier stellen Sie Ihre targetSDkversion auf alle höheren Versionen (für z 16 hier) und stellen Sie Ihre minsdkversion Versionen zu senken (API 7).

7

Etwas wie folgt aus:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN){ 
    view.setBackgroundDrawable(Drawable) 
} else { 
    view.setBackground(Drawable) 
}