De nombreuses personnes qui étudient la programmation Android constateront que chacun a des préférences différentes quant à la manière d'écrire du code. La plus évidente est la manière différente d'écrire les contrôles pour répondre aux événements. Par conséquent, cet article résumera ces méthodes d'écriture et comparera les avantages et les inconvénients des différentes méthodes d'écriture. J'espère qu'il pourra être d'une certaine valeur de référence pour que chacun choisisse de manière flexible les méthodes d'encodage.
Le code du fichier XML est le suivant :
<Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button1" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button2" />
Les quatre méthodes sont décrites comme suit :
Classe interne anonyme :
public class TestButtonActivity extends Activity { Button btn1, btn2; Toast tst; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_button); btn1 = (Button) findViewById(R.id.button1); btn2 = (Button) findViewById(R.id.button2); btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast tst = Toast.makeText(TestButtonActivity.this, "111111111", Toast.LENGTH_SHORT); tst.show(); } }); btn2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast tst = Toast.makeText(TestButtonActivity.this, "222222222", Toast.LENGTH_SHORT); tst.show(); } }); } }
Personnalisée Classe d'écoute d'événement click :
public class TestButtonActivity extends Activity { Button btn1, btn2; Toast tst; class MyClickListener implements OnClickListener { @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.button1: tst = Toast.makeText(TestButtonActivity.this, "111111111", Toast.LENGTH_SHORT); tst.show(); break; case R.id.button2: tst = Toast.makeText(TestButtonActivity.this, "222222222", Toast.LENGTH_SHORT); tst.show(); break; default: break; } } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_button); btn1 = (Button) findViewById(R.id.button1); btn2 = (Button) findViewById(R.id.button2); btn1.setOnClickListener(new MyClickListener()); btn2.setOnClickListener(new MyClickListener()); } }
Activity hérite de View.OnClickListener et Activity implémente la méthode OnClick (View view), dans la méthode OnClick (View view), switch-case est utilisé pour répondre à la classe d'écoute d'événement click :
public class TestButtonActivity extends Activity implements OnClickListener { Button btn1, btn2; Toast tst; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_button); btn1 = (Button) findViewById(R.id.button1); btn2 = (Button) findViewById(R.id.button2); btn1.setOnClickListener(this); btn2.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.button1: tst = Toast.makeText(this, "111111111", Toast.LENGTH_SHORT); tst.show(); break; case R.id.button2: tst = Toast.makeText(this, "222222222", Toast.LENGTH_SHORT); tst.show(); break; default: break; } } }
Activity hérite de View.OnClickListener et Activity implémente la méthode OnClick (View view). boutons représentés par différents ID. Traitement
<Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onClick" android:text="Button1" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onClick" android:text="Button2" />
La dernière est une méthode d'écriture que j'ai vue aujourd'hui, qui consiste à "afficher l'attribut onClick du bouton spécifié dans le fichier XML, de sorte que lorsque le bouton est cliqué, le clic dans l'activité correspondante sera appelé à l'aide de la méthode réflexion () "
public class TestButtonActivity extends Activity { Button btn1, btn2; Toast tst; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_button); } // 注意 这里没有 @Override 标签 public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.button1: tst = Toast.makeText(this, "111111111", Toast.LENGTH_SHORT); tst.show(); break; case R.id.button2: tst = Toast.makeText(this, "222222222", Toast.LENGTH_SHORT); tst.show(); break; default: break; } } }
Ici, lorsque vous appuyez sur Alt / après avoir tapé android :, il y aura une invite pour l'attribut onClick, mais lorsque vous entrez android:onClick=" et appuyez sur Alt /, il n'y aura pas d'invite onClick. option, j'ai soudainement eu l'impression qu'il y avait quelque chose qui n'allait pas ici.
Cette façon d'écrire peut réaliser l'événement de clic de le bouton sans déclarer le bouton dans tout le code. Voici les quatre implémentations de la méthode d'événement de clic de bouton Un résumé approximatif est qu'il est plus rapide d'utiliser des classes internes anonymes lorsqu'il y a. il y a peu de boutons, comme lors de l'écriture de tests de démonstration ou d'interfaces de connexion. Dans la plupart des cas, je choisis toujours la troisième méthode, qui est plus pratique Concernant la quatrième méthode, je pense que c'est la plus pratique, mais. après avoir lu beaucoup de codes, j'ai toujours l'impression que la méthode d'écriture n'est pas assez populaire. Les amis intéressés peuvent étudier cela. Je pense qu'il y aura beaucoup de gains. J'espère que cet article sera utile. tout le monde apprend la programmation Android. Plus d'articles connexes résumant les quatre méthodes courantes d'écriture d'événements de clic sur les boutons Android .