Ce que j'ai est:
manifeste: p> source: p> partout où j'ai parcouru cela est l'accepté, suggéré: p> mais il est obsolète dans API 18. Je suis terrorisé avec des bugs-cadres et des documentations de Miss au niveau du système d'exploitation. Je veux respecter ce qu'ils disent et en cas de crash ", ce n'est pas ma faute" p> Je ne peux même pas utiliser le nouveau bitmapDrawable (bitmap) code> et j'ai besoin < Code> Nouveau bitmapDrawable (getactivité (). getResources (), bitmap) code> à la place. Si je change ma méthode de manière recommandée: Ça marquera comme une erreur avec le message: < / p> Appel requis Niveau d'API 16 (courant actuel est 10):
android.widget.relatelativelayout # setbackground p>
blockQuote> En tant que solution, je pouvais vérifier quelle version exécute l'utilisateur et faire un if-else que je vais avoir un code avec une solution acceptable de solution? P> Si je m'échappe des avertissements de dépréciation via la réflexion, je aura toujours la responsabilité en cas de crash, car j'ai libéré le code avec une méthode obsolète ! -Juste la façon dont j'appelle est différent. p> Si j'ignore cette peluche, il ne s'échappera à une API de version basse, testée. p> OFC, je veux soutenir API 10, Vous ne pouvez donc pas accepter la plupart des réponses de ici p> p> Setbackground (nouveau bitmapDrawable (getActivity (). GetResources (), bitmap)); code> p>
si (isandroidversion10 ()) autre si () ... < / code> p>
4 Réponses :
C'était rapide, je l'ai eu de Voici une solution acceptable homme ... Un simple parc de recul () ... p> Google a commencé à copier des éléments non fonctionnels de iOS (rotation, pushmodal est très différent dans 4.3,5,6) horrible pour développer la version multi-version p> p>
Juste parce que quelque chose est obsolète ne signifie pas que cela ne fonctionne pas. De Voir source , la définition de setbackground code> est (à partir de la dernière version de Android):
public void setBackground(Drawable background) {
//noinspection deprecation
setBackgroundDrawable(background);
}
+1, j'ai vu cela dans leur code source. Le problème est que lorsque l'application s'écrasera pour une raison quelconque, lorsque je ne peux pas démontrer clairement, c'est une erreur de l'utilisateur ou un bogue OS. Que mon instant je suis coupable parce qu'il est visible instantané: j'ai utilisé une méthode obsolète ... ou pouvez-vous expliquer à mes utilisateurs, à des clients "simplement parce que quelque chose est obsolète ne signifie pas que cela ne fonctionne pas", quand ils ont un crash? :)
Un peu en retard à cette fête, mais mon ami, je pense que les raisons de votre crash sont à la baisse de l'exception de la méthode de mise à niveau ... Assurez-vous que vous chargez de manière efficace vos fosses bitmaps avant de les définir sur un arrière-plan. Cela pourrait aider ici p>
Si vous souhaitez éviter la chaudière postée dans la réponse acceptée, essayez ceci:
public static void setBitmapCompat(View view, Bitmap bitmap) { BitmapDrawable bd = new BitmapDrawable(view.getContext().getResources(), bitmap); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { view.setBackground(bd); } else { view.setBackgroundDrawable(bd); } }