J'ai dans la touche 16 code> S (Numéros, plus, moins, etc.) dans mon fichier XML de mise en page. P>
Je me demande comment vérifier quel bouton a été enfoncé. P>
Mon idée est que je ferai pour chaque bouton Utilisez Y a-t-il un moyen plus élégant? P> onclick () code> méthode mais cette méthode est un peu impraticement, car j'aurai 16 de ces
onclick () code> Méthodes une pour chaque bouton. P>
6 Réponses :
Vous n'avez pas à mentionner 16 sur les auditeurs click. Créez un et joignez-le à chaque bouton. OnClick () Méthode obtient une vue comme paramètre. Cette vue est votre bouton. Vérifiez simplement que c'est ID ou nom. P>
Vous pouvez utiliser un gestionnaire que vous ne définissez pas comme classe intérieure anonyme, mais dans une classe distincte. puis dans votre layout.xml vient de mettre pour chaque bouton P> onclick () code> obtiendra la vue passée et vous pouvez en choisir.
Bien sûr. Créez un tableau de votre Activité: p> Button-IDS CODE> et attribuez-leur le même écouteur (une implémentation de
View.onClickListener code> définie comme classe distincte, pas comme classe anonyme) dans une boucle. Dans l'auditeur, vous pouvez vérifier qui est le bouton pressé (en comparant le paramètre code> code> dans
onclick () code> méthode).
int id = view.getId();
switch (id)
{
case ...:
// Do stuff
case ...:
// Do different stuff
}
Vous pouvez les traiter tous dans une seule classe qui implémente OnClickListener ou dans la classe d'activité si vous aimez ...
import android.view.View.OnClickListener; public class MyActivity extends Activity implements OnClickListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button buttonA = (Button) findViewById(R.id.buttonA); buttonA.setOnClickListener(this); Button buttonB = (Button) findViewById(R.id.buttonB); buttonB.setOnClickListener(this); } //etc... etc... public void onClick(View v) { switch (v.getId()) { case R.id.buttonA: // do something break; case R.id.buttonB: // do something else break; } } }
Merci pour vos allusions, les gars. J'ai essayé de faire comment montrer @ user433579, mais j'arrive toujours après avoir exécuté mon application dans l'erreur d'émulateur "Désolé! - Cette application Calc (processus com.tsk.calc) s'est arrêté de manière inattendue. S'il vous plaît essayez à nouveau." Où pourrait être un problème? Il existe un fichier pour les défauts de journal ou quelque chose de similaire?
import android.view.View.OnClickListener; public class MyActivity extends Activity implements OnClickListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button buttonA = (Button) findViewById(R.id.buttonA); Button buttonB = (Button) findViewById(R.id.buttonB); buttonA.setOnClickListener(this); buttonB.setOnClickListener(this); } public void onClick(View v) { if(v==buttonA) { do something... } if(v==buttonB) { do something... } }
Je fais habituellement quelque chose comme ceci: initier les boutons avec un numéro d'identification à la classe principale, comme celui-ci: p> Ceci est soigné si vous avez un grand nombre de boutons tels que vous le souhaitez et que vous souhaitez utiliser le même auditeur pour tous.
Bravo! P> P>
Dupliqué possible de Stackoverflow.com/questions/3795439/... < / a>