Récemment, j'ai trouvé qu'AndroidStudio me rappelle de supprimer certains cast de classe. Je me souviens que dans l'ancien temps, nous devions lancer le résultat de findViewById, mais maintenant ce n'est pas nécessaire.
Le résultat de findViewById est toujours View, donc je veux savoir pourquoi nous n'avons pas besoin de lancer la classe?
Je ne trouve aucun document mentionné, est-ce que quelqu'un peut trouver un document?
android
casting
findviewbyid
Eric Zhao
la source
la source
<T extends View> T findViewById(int id)
?Réponses:
À partir de l'API 26,
findViewById
utilise l'inférence pour son type de retour, vous n'avez donc plus à effectuer de cast.Ancienne définition:
Nouvelle définition:
Donc, si vous avez
compileSdk
au moins 26 ans, cela signifie que vous pouvez en profiter :)la source
ClassCastException
.D'après cet article :
la source
Dans les anciennes versions:
Depuis Android Studio 3.0 avec SDK 26:
la source
Android Studio vous rappelle de supprimer la diffusion si vous utilisez des attributs communs de la classe View , comme la visibilité ou certaines méthodes courantes, comme onClick ()
Par exemple:
Dans ce cas, vous pouvez simplement écrire:
la source
Android 0, nettoyer la diffusion
L'une des choses que Google annonce dans IO 2017 est quelque chose qui s'appelle «rejeter» :). Les développeurs Android n'ont pas à effectuer une conversion manuelle pour findViewById (). Par exemple, l'ancienne méthode pour obtenir une vue de texte en utilisant findViewById () serait quelque chose comme ça.
Alors que la nouvelle façon serait comme ça
C'est un simple changement. Mais pour un programmeur chevronné, un code propre comme celui-ci peut vous rendre très heureux et aider à votre humeur de codage :)
Pour pouvoir le faire, il vous suffit de définir la version sdk compilée de votre projet sur la version 26 dans votre application build.gradle.
Vous pouvez toujours cibler une version antérieure de sdk, il s'agit donc de modifications non intrusives.
Maintenant, le vrai problème, comment nettoyez-vous cet ancien code qui utilise le casting tout ce temps. Surtout lorsque vous avez des centaines de fichiers d'activité. Vous pouvez le faire manuellement, ou peut-être embaucher un stagiaire pour le faire 😛. Mais heureusement pour tous ces stagiaires, le studio Android est déjà prêt à nous aider.
Lorsque vous mettez votre curseur (ou cliquez sur le casting redondant), Android Studio vous proposera 2 options pour gérer le casting redondant.
Tout d'abord, il vous suggérera de supprimer cette distribution redondante ou vous pourrez sélectionner le code de nettoyage. Cela supprimera toute la distribution redondante pour ce fichier. C'est mieux, mais nous en voulons plus. Nous ne voulons pas ouvrir chaque fichier et faire ce nettoyage un par un.
L'une des choses qui rendent IntelliJ idea Special est une fonctionnalité appelée action d'intention. Tout ce que vous avez à faire est d'appuyer sur ctrl + shift + A, puis de taper clean. Et sélectionnez l'action de nettoyage du code, puis sélectionnez toute la portée du projet. Avec ces quelques étapes simples, votre code sera beaucoup plus propre.
Un point important est que vous faites cela avec un système de gestion des versions de code. De cette façon, vous pouvez comparer les modifications apportées par l'action d'intention et rétablir les fichiers de votre choix.
Copié à partir du message d'origine:
https://medium.com/@abangkis/android-0-clean-up-casting-c30acec56cef
la source
why
pashow
:The result of findViewById is still View, so i want to know why we don't need to cast the class?
Dans le code source de
ViewGroup
, il y a un cast de l'argument de retour. Il n'est donc pas nécessaire de lancer à nouveau:la source