Android onClick en XML vs OnClickListener
Je me rends compte qu'un de même, le libellé de la question a été posée avant, mais ce qui est différent. Je suis assez nouveau à développer des applications android et j'ai trois questions au sujet de la différence(s) entre le android:onclick=""
attribut XML et le setOnClickListener
méthode.
-
Quelles sont les différences entre les deux? Est la différence entre les deux implémentations trouvé au moment de la compilation ou de l'exécution ou les deux?
-
Ce cas d'utilisation sont favorables à la mise en œuvre?
-
Quelle est la différence de(s) l'utilisation de fragments de Android faire dans la mise en œuvre de choix?
- Pour n ° 2: Vous devez être prudent lors de l'utilisation du xml
onclick
que vous devez vous assurer que chaque classe qui implémente cette méthode. C'est en supposant que vous utilisez la mise en page plus d'une fois. Toutefois, si vous avez une interface java pour s'assurer de la méthode a été dans toutes les classes qui l'ont mis en œuvre, vous n'auriez pas à vous inquiéter. - Ne pas avoir une interface java comme vous l'avez décrit être à peu près le même que l'extension ou la implimenting OnClickListener?
- J'ai regardé dans ce avant et je pense qu'il y a un peu plus de préférence, mais je suis désolé je ne peux pas en dire beaucoup plus car il a été un moment. J'aime la
android:onclick
lorsque c'est pratique, mais je sais que, parfois, il a causé des problèmes, et je ne me souviens pas non plus 🙂 - xml onClick ne fonctionne pas pour les sous éléments de mise en page qui sont dynamiquement gonflés dans de l'API de niveau 19
- J'ai rarement vu un code d'autres personnes, la mise en œuvre de android:onClick et c'est le plus déroutant lorsque vous regardez à travers quelqu'un elses code. Comme il n'a pas toutes les possibilités de setOnClickListener près toute personne utilise uniquement setOnClickListener à mon avis
Vous devez vous connecter pour publier un commentaire.
Différence Entre OnClickListener vs OnClick:
d'un point de vue dans du code java.
de fait, cliquez, onclick détermine ce qui se passe quand quelqu'un
clique.
qui peut être utilisé pour gérer les clics directement dans le point de vue de l'activité
sans la nécessité de mettre en œuvre une interface.
Les deux fonctionnent de la même manière, c'est juste que l'un est défini par le code de java et de l'autre par le biais de code xml.
setOnClickListener mise en Œuvre du Code:
XML de mise en Œuvre:
Performance:
Les deux sont les mêmes performances. Xml est pré-analysée en code binaire lors de la compilation. donc, il n'y a pas de cours de à tête en Xml.
Limitation:
android:onClick est pour l'API de niveau de 4 ans, donc si vous êtes ciblage < 1.6, alors vous ne pouvez pas l'utiliser.
Je suis choqué personne n'a parlé de cela, mais être prudent, bien que
android:onClick
XML semble être un moyen pratique pour manipuler cliquez sur lesetOnClickListener
de mise en œuvre de faire quelque chose supplémentaire que l'ajout de laonClickListener
. En effet, il a mis le point de vue de la propriétéclickable
de vrai.Alors que c'est peut-être pas un problème sur la plupart des Android mises en œuvre, selon le téléphone constructeur, le bouton est toujours par défaut à cliquable = vrai, mais d'autres constructeurs sur certains modèle de téléphone peut avoir une valeur par défaut cliquable = false non sur le Bouton points de vue.
Paramètre le fichier XML n'est pas suffisant, vous devez penser tout le temps à ajouter
android:clickable="true"
sur le bouton non, et si vous avez un appareil où la valeur par défaut est cliquable = true et vous oubliez encore une fois pour mettre cet attribut XML, vous ne remarquerez pas le problème au moment de l'exécution, mais permettra d'obtenir de la rétroaction sur le marché quand il sera dans les mains de vos clients !En outre, nous ne pouvons jamais être sûr de savoir comment proguard va occulter et renommer les attributs XML et la méthode d'une classe, donc pas sûr à 100% qu'ils n'auront jamais de bug un jour.
Donc, si vous ne voulez pas avoir de la difficulté et de ne jamais penser à elle, il est préférable d'utiliser
setOnClickListener
ou des bibliothèques comme ButterKnife avec l'annotation@OnClick(R.id.button)
android:onClick
?Simplement:
Si vous avez
android:onClick = "someMethod"
en xml, il semble pour lepublic void someMethod
dans votre classe d'Activité.OnClickListener
est appelé droit de votre Activité et il est lié à certainsView
. Par exemplesomeButton.setOnClickListener
et dans le code ci-dessous est dit ce qui doit être fait lorsquesomeButton
est pressé.Espère que cela aide 🙂
Comme l'a dit avant: elles sont un moyen d'ajouter de la logique en réponse à un événement, dans ce cas, un "clic" de l'événement.
Je pencherais pour une séparation entre la logique et la présentation, tout comme nous le faisons dans le code HTML/JavaScript monde: Laissez le XML pour la présentation et ajouter des écouteurs d'événement par le biais de code.
Si vous avez plusieurs boutons en utilisant une seule méthode, je vous suggère de le faire en java. Mais si vous avez un bouton avec une méthode spécifique, onClick en XML serait mieux.
Il est plus commode de toujours utiliser la version d'android:onClick attribut, sauf si vous avez une bonne raison de ne pas, par exemple, si vous instanciez le Bouton au moment de l'exécution ou vous devez déclarer le comportement du clic dans un Fragment de la sous-classe.
Je pense que la principale différence entre eux est:
OnClick: Lorsque vous cliquez sur le bouton avec votre doigt.
OnClickListner: C'est peut-être d'un plus large choix que d'être mis en œuvre dans les différents codes.
Par exemple, lorsque vous tapez une url "ymail.com", yahoo trouve votre nom d'utilisateur et votre mot de passe à partir de votre navigateur et cliquez sur activer l'état du bouton pour ouvrir votre courrier. Cette action devrait être mis en œuvre que dans onClickListener.
C'est mon idée!!!!