web-dev-qa-db-fra.com

Comment simuler un clic de bouton en utilisant un code?

Comment déclencher un événement de clic de bouton à l'aide de code sous Android? Je souhaite déclencher le clic du bouton par programmation lorsqu'un autre événement se produit.

Même problème que je rencontre

public void onDateSelectedButtonClick(View v){
    /*Something  Alarm Management 
    http://www.Java2s.com/Code/Android/Core-Class/Alarmdemo.htm
    copied code from this site*/
}

Code du bouton:

<Button
    Android:onClick="onDateSelectedButtonClick"
    Android:text="Set notification for this date" />

Mais je veux appeler cette fonction OnLoadLayout sans OnClickEvent

204
sam

il y a un meilleur moyen.

View.performClick();

http://developer.Android.com/reference/Android/view/View.html#performClick ()

cela devrait répondre à tous vos problèmes. chaque vue hérite de cette fonction, y compris Button, Spinner, etc.

428
moonlightcheese

Pour clarifier ce que Moonlightcheese a déclaré: Pour déclencher un événement de clic sur un bouton via le code dans Android, fournissez les éléments suivants:

buttonName.performClick();
49
Scott Tovey

vous pouvez le faire de cette façon

private Button btn;
btn = (Button)findViewById(R.id.button2);
btn.performClick();
11
Tushar Saha

Il suffit d'écrire cette simple ligne de code: -

button.performClick();

où button est la variable de référence de la classe Button et définie comme suit: -

private Button buttonToday ;
buttonToday = (Button) findViewById(R.id.buttonToday);

C'est ça.

7
Deepak Sharma

callOnClick() d'Android ( ajouté dans l'API 15 ) peut parfois être un meilleur choix, selon mon expérience, que performClick(). Si un utilisateur sélectionne les sons de sélection activés, alors performClick() peut amener l'utilisateur à entendre deux sons de sélection continus légèrement superposés qui peuvent être secousses. (Un son de sélection pour le premier clic de l'utilisateur, puis un autre pour le OnClickListener de l'autre bouton que vous appelez via un code.)

7
Charles Madere

À partir de API15, vous pouvez également utiliser callOnClick() qui appelle directement la vue attachée OnClickListener. Contrairement à performClick (), cela n'appelle que l'écouteur et ne fait aucune action de clic associée, telle que le signalement d'un événement d'accessibilité.

5
Colateral

Si vous n'utilisez pas l'argument sender, pourquoi ne pas refactoriser l'implémentation du gestionnaire de boutons pour séparer les fonctions et l'appeler de n'importe où (à partir du gestionnaire de boutons et de l'autre endroit).

Quoi qu'il en soit, il s'agit d'une conception meilleure et plus propre - un code qui doit être appelé sur le gestionnaire de boutons ET à partir de certains autres emplacements mérite d'être refondu à sa propre fonction. De plus, cela vous aidera à séparer le traitement de l'interface utilisateur du code logique de l'application. Vous aurez également un nom agréable pour la fonction, pas seulement onDateSelectedButtonClick ().

3
d.popov