Le 14 septembre 2017, nous avons publié une version actualisée de notre Politique de confidentialité. En utilisant video2brain.com vous vous engagez à respecter ces documents mis à jour. Veuillez donc prendre quelques minutes pour les consulter.

Java pour les développeurs Android

Combiner callback et interface

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Apprenez ce qu'est une interface et quelle est son utilité. Initiez-vous également au principe de callback et à son implémentation à l'aide d'une interface.
06:51

Transcription

Dans cette vidéo, nous allons parler d'interface et de callback. Nous avons vu comment on étend une classe déjà existente grâce au mot-clé extends. Il faut savoir qu'on ne peut étendre qu'une seule classe, qui elle-même, peut étendre d'une classe et ainsi de suite, mais ici, si je veux étendre de Adapter et de MainActivity, ce n'est pas possible, c'est la limite de l'héritage. Pour pallier à ça, Java a créé les interfaces. Donc on peut étendre d'une classe, par contre, on peut implémenter autant d'interfaces qu'on veut, sauf que, la limite d'une interface, c'est qu'on ne peut mettre que des méthodes abstraites. Regardons une interface que nous avons déjà utilisée. On va aller dans la classe MainActivity, on voit ici : implements. Le implements concerne les interfaces, l'extends concerne les classes. Ici on implémente l'interface OnClickListener de la classe view. Il y a un point, car c'est une interface à l'intérieur d'une classe. Je clique pour aller voir, voilà, j'arrive sur la déclaration d'une interface. Donc au lieu de marquer classe, on marque interface, public interface, le nom de mon interface, et à l'intérieur, je peux mettre autant de méthodes que je souhaite avec la seule contrainte qu'elles doivent être abstraites. Et comme elle sont forcément abstraites, on n'a même pas besoin d'indiquer qu'elles sont abstraites. Ici ma méthode onClick, je n'ai que sa signature. Ici, dans cet exemple, l'interface onClick ne possède qu'une seule méthode, mais si je descends, voilà, nous arrivons dans une autre interface qui elle, possède deux méthodes. Alors, il faut imaginer une interface comme un contrat, c'est-à-dire que n'importe quelle classe qui implémente une interface a le devoir de posséder les méthodes dans sa classe, elle a le devoir d'implémenter les méthodes. Ici, si je remonte dans onClick, voilà, OnClickListener, toute classe qui implémente OnClickListener a le devoir de posséder la méthode onClick dans sa classe. Si je reviens sur MainActivity, j'ai effectivement ma méthode onClick. Ici, c'est très important, il faut conserver la signature de la méthode, c'est-à-dire que si j'enlève le View V, je n'ai plus la même signature de méthode. Dans ce cas-là, j'ai mon @Override qui devient en erreur, et qui m'indique que ce n'est plus une surcharge de méthode, car je ne réécris pas une méthode existante, j'en crée une nouvelle. Par le principe de polymorphisme, il sera capable d'identifier par le principe de polymorphisme, il sera capable d'identifier que le onClick avec paramètres est différent du onClick sans paramètres. Si j'enlève le @Override, qui est en fait une annotation uniquement de sécurité, pour justement vérifier ce genre d'erreurs, ma classe ici, m'indique que ma méthode MainActivity n'implémente pas OnClickListener, elle ne respecte pas son contrat, elle ne possède pas la méthode onClick avec la signature attendue. Il me propose d'en refaire une. Donc, je remets dans l'état initial. En terme de typage maintenant. Ici, Main Activity, je peux le mettre dans un pointeur vers MainActivity, je peux le mettre dans un pointeur vers AppCompatActivity, et je peux maintenant le mettre dans un pointeur vers OnClickListener, c'est-à-dire que cette ligne View.OnClickListener = new MainActivity(); voilà, ceci est légal, donc, jusqu'à présent, nous n'avons pas eu besoin de faire new activity pour la simple et bonne raison que nous n'avons jamais créé d'activité, c'est toujours le système du SDK qui le fait, donc voilà, ici, je n'ai pas d'erreur car effectivement, MainActivity, comme elle implémente OnClickListener, elle peut aller vers un pointeur OnClickListener. Un pointeur OnClickListener, qu'est-ce que je vais avoir comme méthode, je ne vais avoir uniquement les méthodes de la classe Objet, et les méthodes de l'interface, donc la fameuse méthode onClick. Ici, j'ai fait un new MainActivity, donc le pointeur sera un pointeur vers un new MainActivity. Le fait de faire OnClickListener.onClick, cela reviendra à appeler le onClick de MainActivity, le principe de l'héritage et du polymorphisme. Voilà pour les interfaces. Maintenant, je vais vous parler de callback. Le callback peut être relié à une interface, alors qu'est-ce qu'un callback ? Un callback, c'est le fait de pouvoir être prévenu qu'un événement s'est produit. Par exemple, lorsque je clique sur un bouton, je veux pouvoir être prévenu qu'on a cliqué sur ce bouton. C'est ce qui se passe ici. Au moment où je clique sur mon bouton, j'ai bien ma méthode onClick qui se déclenche. Je me suis donc abonné au CallBack de mon bouton. Un CallBack est constitué de trois éléments : Il y a l'émetteur, celui qui prévient que l'événement a été déclenché, en l'occurrence ici, c'est notre bouton. Il y a le receveur, celui qui est abonné à notre callback, ce que nous avons fait ici. Le fait de s'abonner à ce callback, en lui transmettant (this), donc (this) est de type MainActivity, donc il s'attend à ce que la classe MainActivity implémente OnClickListener. Si j'enlève le implements OnClickListener, ici, je me retrouve avec une erreur car il me dit que cet OnClickListener attend un objet de type OnClickListener, et moi, je lui transmets un objet qui n'est pas de type OnClickListener. En faisant ALT+Entrée, il me propose de faire en sorte que MainActivity implémente OnClickListener, le fait qu'elle implémente OnClickListener, elle devient de type OnClickListener. On peut donc la transmettre à la méthode setonClickListener. Donc, le receveur a deux éléments, le premier c'est l'abonnement, et le deuxième, c'est l'action qui se passe une fois qu'on l'appelle, à quel endroit on prévient que l'événement a eu lieu. Donc ici, je m'abonne à mon bouton, et ici je reçois le clic de mon bouton. Je vous ai dis que pour faire un callback il y avait trois éléments, l'émetteur, le receveur, et le moyen de communication. Ici, le moyen de communication utilisé est le contrat lié à une interface, car comme je vous l'ai montré tout à l'heure, OnClickListener est une interface. Alors pourquoi je vous amène cette notion de callback ? Tout simplement parce que c'est un mot-clé récurrent qu'il faut comprendre. Je vous montrer par l'exemple. Je vais aller sur la librairie de LinkedIn pour Android, je clique. Donc c'est la librairie qui explique comment utiliser la librairie, et regardez, si je fais une recherche, je tombe bien sur le terme callback qui m'explique donc comment récupérer les informations. Donc ici, en l'occurrence, si ça a réussi ou si ça a échoué. Même chose un peu plus loin, voilà, c'est pour ça que je vous explique le terme de callback que vous allez retrouver à de nombreuses reprises en utilisant des librairies pour Android.

Java pour les développeurs Android

Prenez en main la syntaxe et les concepts de Java pour vos développements d’applications pour Android. Abordez les variables, les chaînes de caractères, les conditions, etc.

7h01 (65 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :24 avr. 2017

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !