French subtitles

← Casting with findViewById

Get Embed Code
13 Languages

Showing Revision 1 created 10/12/2015 by sp14.

  1. J'ai ajouté qu'on vient juste
    de voir dans notre app.
  2. Ça dit Voir orderSummaryTextView
    = findViewById
    ,
  3. alors on passe la ressource ID pour
    order_summary_text_view.
  4. Mais ça entraîne une erreur dans
    Android Studio sur la prochain ligne.
  5. Ça dit qu'il ne peut résoudre
    la méthode setText.
  6. Si j'ajoute une autre
    ligne de code ici,
  7. Je peux vous montrer les types de méthodes
    qui sont valides sur cette variable.
  8. Donc, on vient juste de créer
    la variable orderSummaryTextView ici,
  9. et c'est TypeView,
    et donc
  10. sur la prochaine ligne, on devrait
    être apte à appeler des méthodes sur ça.
  11. Mais si vous regardez les suggestions
    de saisie semi-automatique,
  12. ces méthodes sont en
    fait des méthodes de vue.
  13. Il n'y a pas de méthodes
    TextView spécifiques.
  14. Par exemple, il n'y a
    pas de méthode setText.
  15. C'est pourquoi on a eu une erreur ici
    quand on essaye d'appeler setText.
  16. Vous ne pouvez pas non plus établir la taille
    du texte ou la couleur du texte ou autre.
  17. Alors où sont toutes ces méthodes?
  18. Bien, a chose est qu'un TextView
    est un type de vue plus spécifique.
  19. Alors si on veut appeler les méthodes
    TextView
  20. sur cet objet on doit s'assurer
    que c'est un objet TextView.
  21. Ok. Maintenant la variable
    est un objet TextView.
  22. Mais alors, j'ai une autre erreur qui dit
    types incompatibles, car un TextView
  23. est requis sur le côté droit,
    mais on trouve juste une vue régulière.
  24. C'est parce que la méthode findViewById
    retourne une Vue.
  25. Alors,
    comment peut-on concilier cela ?
  26. Eh bien, puisque TextView est un type de vue
    plus spécifique ou met une autre façon,
  27. un TextView est une sous-classe de vue,
    on peut utiliser une chose appelée casting.
  28. Casting en Java signifie qu'on peut prendre
    une Vue retournée par cette méthode et
  29. le traite comme un TextView
  30. Donc maintenant ce côté droit est
    est un objet TextView et
  31. alors on peut le stocker dans la
    variable orderSummaryTextView.
  32. Je sais que ce doit être vraiment
    écrasante parce que je viens de
  33. mentionner une tonne de nouveaux
    concepts.
  34. Essayons d'expliquer
    encore une fois.
  35. La méthode findViewById retourne
    un objet de type Vue.
  36. En écrivant cette notation,
  37. parenthèses avec le type de données de
    l'objet désiré dans le milieu de celui-ci.
  38. On va mouler cette
    Vue en un TextView.
  39. ALors l'entière expression ici
    évalue pour un objet TextView.
  40. Alors, on peut stocker ça dans la variable,
    sur le côté gauche,
  41. qui est orderSummary,
    et il a un type TextView.
  42. Maintenant, sur les lignes suivantes, on peut
    appeler les méthodes TextView sur cet objet.
  43. Voyez-vous maintenant comment toutes les
    méthodes de texte font leur apparition ici?
  44. setAllCaps,
    setTextSize, et plus.
  45. Donc je peux juste effacer ça maintenant,
    car setText devrait fonctionner
  46. et il n'y a plus d'erreur.
  47. Alors si on veut être apte à
    appeler les méthodes TextView,
  48. on doit avoir
    un objet TextView.
  49. Afin d'avoir un objet TextView,
    on doit appeler findViewById,
  50. et puis mouler cet objet Vue
    en un TextView.
  51. La raison casting
    fonctionne est car
  52. cette Vue ici dans la hiérarchie
    de vue est en fait un TextView.
  53. Si on veut le mouler en quelque chose comme
    un bouton radio, ça ne fonctionnerait pas,
  54. car le orderSummaryTextView
    est en fait un TextView, donc
  55. on doit le mouler en
    un type approprié.
  56. Similairement, dans la méthode displayQuantity,
    on appelle findViewById et
  57. nous passons dans cette ressource ID
    pour la quantité TextView.
  58. Ça retourne une Vue et on
    le moule en un TextView et
  59. on peut stocker ça dans cette variable
    appelée quantityTextView.
  60. Cette variable est de type
    TextView, et alors,
  61. sur les lignes suivantes, on peut appeler les
    méthodes TextView dessus, comme setText.
  62. Voici le code mis à jour de l'activité
    principal utilisant casting.
  63. On peut mouler ces Vues en TextViews
    pour qu'on puisse les stocker dans des
  64. variables de type TextView donc
    dans cette liste de l'activité principale,
  65. maintenant quantityTextView et
    orderSummaryTextView sont de type TextView.
  66. On peut appler les
    méthodes TextView sur cela,
  67. et nous ne sommes pas seulement limités
    à les traiter comme des Vues.
  68. Et maintenant on peut appeler les méthodes
    TextView spécifiques sur ces variables.
  69. Par exemple, on peut appeler setText
    sur le orderSummaryTextView,
  70. et on peut appeler setText
    sur le quantityTextView.
  71. Comme vous pouvez voir,
  72. vous devez être prudent sur les
    types de données à être utilisés ici.
  73. Jusqu'ici, quand on a appelé des méthodes, on
    ne s'est pas inquiété sur la valeur de retour,
  74. car la méthode setText
    n'a pas de valeur de retour.
  75. Pareil avec la méthode
    imageView.setImageResource.
  76. Ça n'a pas de valeur de retour.
  77. Mais d'autres méthodes peut
    avoir des valeurs de retour.
  78. Par exemple, dans la classe TextView
    on a une méthode getTextSize.
  79. Ça retourne un entier, donc
  80. on peut stocker le résultat de cette méthode
    dans une variable appelé sizeOfTypeInt.
  81. Voici une autre méthode
    qui a une valeur de retour.
  82. Dans la classe Button on peut
    appeler la méthode getHeight,
  83. et ça retourne une valeur entière, donc
    on peut le stocker dans une variable.
  84. Si vous essayez de stocker ce résultat
    dans une chaîne, par exemple,
  85. vous obtiendriez une erreur,
    car cette méthode retourne un entier.
  86. Afin de savoir quel type de données doit
    passer dans une méthode et quel type de
  87. données est retourné par une méthode,
    vous devriez vérifier la documentation.
  88. Et par exemple,
    dans la classe TextView,
  89. si vous appelez une de ces méthodes,
    elle retourne une valeur de type int.
  90. Le type de données de valeur de retour est
    sur la colonne de gauche ici.
  91. Pour les autres méthodes, vous pourriez obtenir
    vide comme valeur de retour, ou des booléens,
  92. ce qu'on n'a pas encore appris,
    ou flottants ou longs etc.
  93. Cette page de documentation page montre
    aussi les types de données attendus pour
  94. les entrées pour chaque méthode.
  95. Par exemple, la méthode setTextColor
    requiert un entier comme entrée et
  96. la valeur de retour est vide,
    donc il n'y a pas de valeur de retour.
  97. Donc vérifiez la documentation pour savoir
    quels types de données sont attendus.
  98. Autrement, vous aurez des erreurs
    dans Android Studio disant que
  99. les types de données
    ne correspondent pas.
  100. Maintenant c'est
    votre tour de pratiquer.
  101. En-dessous, il y a quatre différents
    exemples de code.
  102. Certain des codes peut contenir des erreurs
    liées à la correspondance des types de données.
  103. Si vous trouvez une erreur,
  104. décrivez comment vous êtes supposé le régler
    en l'écrivant dans les cases fournies.
  105. Autrement, vous pouvez juste écrire Pas
    d'erreur si le code est bon.
  106. Ça va être un quiz difficile
    car on vient de couvrir
  107. beaucoup de concepts, et ce code
    est toujours assez nouveau pour vous.
  108. Prenez votre temps et vérifiez
    la documentation pour ces méthodes.
  109. Assurez-vous que les entrées et les
    valeurs de retour soient correctes et
  110. que, si on déclare des variables, qu'on
    a les types de données corrects ici.
  111. Aussi,
    consultez la documentation pour
  112. les appels de ces méthodes pour s'assurer
    qu'on utilise les méthodes correctement.