2012-10-25 7 views
5

La setBackgroundDrawable() méthode de la classe View en est maintenant dépréciée dans le niveau de l'API Android SDK 16.Solution de contournement pour setBackgroundDrawable sur android?

La nouvelle méthode est setBackground() mais bien sûr, il est seulement disponible dans l'API 16.

Comment puis-je contourner si je Voulez-vous que mon application soit compatible avec les niveaux d'API précédents? (au moins API 14)

Le but est d'éliminer tous les avertissements et un @SupressWarnings n'est pas une solution pour moi.

+0

Avez-vous essayé l'annotation '@TargetApi'? (Seems Lint lui-même suggère de cette façon) – sandrstar

+0

@SuppressWarnings * est * la solution. Si vous ciblez l'API 14 et que vous n'avez besoin d'aucune fonctionnalité de la nouvelle API, appelez l'ancienne API et supprimez l'avertissement est la bonne chose à faire. –

Répondre

15

La manière habituelle est celle-ci:

if (android.os.Build.VERSION.SDK_INT >= 16) 
    setBackground(...); 
else 
    setBackgroundDrawable(...); 

D'autre part, vous pouvez utiliser des réflexions:

try { 
    Method setBackground = View.class.getMethod("setBackground", Drawable.class); 
    setBackground.invoke(myView, myDrawable); 
} catch (NoSuchMethodException e) { 
    setBackgroundDrawable(myDrawable); 
} 

OMI un avertissement est mieux que d'avoir à prendre une exception et une réflexion inutile.

+1

et peut donc utiliser @SupressWarning dans la clause else? – Alexis

+1

J'ai ajouté une deuxième façon de résoudre votre problème via des réflexions. – keyboardsurfer

+2

Il n'y a aucune raison d'ajouter deux chemins de code. Appelez simplement la méthode obsolète, sauf si votre cible est 16+ ou si vous avez réellement besoin de fonctionnalités dans la nouvelle API. –

3

Vous pouvez utiliser

viewobj.setBackgroundResource(drawble_object); 
0

Réglage bitmap à ImageView.

ImageView imageView = (ImageView) findViewById (R.id.imageSlice4); imageSlice4.setBackground (nouveau BitmapDrawable (getResources(), slicedImagesArrayList.get (3)));

Questions connexes