web-dev-qa-db-fra.com

Android O casting pour findViewById n'est plus nécessaire?

J'ai récemment mis à jour mon Android SDK et construit des outils pour l'API 26 dans Android Studio et j'ai directement remarqué que Android Studio était marquer ma vue comme "redondante" lorsque je fais quelque chose comme ceci:

TextView itemName = (TextView) findViewById(R.id.menuItemName);

Après quelques recherches, j'ai constaté que depuis le SDK 26, findViewById utilise Java 8 fonctionnalités pour renvoyer le même type d'objet, mais ce que je voulais savoir, c'est s'il est complètement sûr de supprimer tous les moulages. Est-ce que cela causera des problèmes sur Android avant 26? Plus d'informations à ce sujet seraient utiles car je n'ai pas trouvé grand-chose sur Internet. Merci d'avance.

33
Amro elaswar

La signature de la méthode a changé comme vous l'avez remarqué et elle ressemble maintenant à:

public <T extends View> T findViewById(int id);

par rapport à l'ancien (avant SDK 26):

public View findViewById(int id);

donc tant que vous utilisez le SDK 26 (ou plus récent) pour compiler votre projet, vous pouvez supprimer en toute sécurité le casting de votre code car vous utiliserez la nouvelle findViewById() qui ne l'exige plus .

donc avoir un minSdk inférieur à 26 ne causera pas de problème?

Non, ni minSdk ni targetSdk n'ont vraiment d'importance. Ce qui compte, c'est compileSdk qui doit être 26 Ou supérieur.

40
Marcin Orlowski