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>