Différence entre onClickListener et celui du cours

Bonjour,
tout est dans le tire:
Quand on crée un bouton sur le cours on procède comme ça:
fun Button (button:view) {}

Sur d’autres tutos, je vois qu’ils utilisent la fonction onClickListener.
Quelle est la différence?

Merci à vous!

Hello,

Je n’ai pas suivi le cours en Kotlin mais là ta fonction Button est vide, elle ne fait rien.
Donc il faut soit faire ensuite un button.setOnClickListener pour définir ce que tu veux faire (en fonction du type que view a également) ou alors, peut-être que dans le cours, vous passez par l’interface graphique du layout pour définir la fonction qui s’occupe du onClick mais c’est assez rare de faire comme ça.

merci pour ta réponse
tout à fait on passe par l’interface graphique pour ajouter la fonction au bouton. Et oui dans mon exemple elle ne fait rien car je l’ai fait exprès mais par exemple pour un compteur:
fun countButton(button:view ){
counter = counter + 1
}

Alors qu’avec une fonction onClickListener je ne sais pas à quoi sert exactement cette fonction et comment elle doit être mise en place…
Et pourquoi c’est assez rare de passer par le layout?

Ah ok.

Je dis ça parce que j’ai l’habitude de passer par le code pour le faire. C’est juste une histoire d’habitude :sweat_smile:

Par le code, tu donnes un id à ton bouton dans le layout, ensuite tu viens le définir au début de ta classe avec un private lateinit var où tu viens le typer (avec : Button par exemple), ensuite tu le lies à la référence du layout en faisant un findViewById et là tu en disposes comme tu veux dans ton code. Donc tu peux venir lui attacher un setOnClickListener pour définir son comportement lors d’un clic.

1 J'aime

d’accord je vois un peu mieux le principe de la fonction onClickListener mais après il n’y a pas d’obligation à utiliser une méthode qu’une autre? Ou c’est vraiment par rapport au feeling et habitudes du développeur ?

Non, y’a aucune obligation, les deux fonctionnent bien, c’est juste une question d’habitude.
J’ai l’habitude de faire le moins de choses possibles dans le layout et de tout faire en code donc c’est pour ça que j’utilise cette méthode.

1 J'aime

merci à toi c’est cool, j’avais peur qu’il y ait une histoire de convention et tout ça…

Effectivement les 2 sont possibles, dans le début du cours je montre la version graphique car lorsqu’on débute la version graphique me semble plus simple à assimiler.
Par contre, plus tard dans le cours (je crois dans le chapitre sur les Fragments) , je montre la version avec ClickListener.
Au niveau performances, je ne pense pas qu’il y ait de différences donc c’est principalement une question de préférence personnelle.
A noter que la version graphique ne fonctionne que pour les activités et non pour les fragments alors que la version onClickListener fonctionne partout.

1 J'aime