Maison  >  Article  >  Java  >  Résumé de quatre méthodes d'écriture courantes pour les événements de clic sur un bouton Android

Résumé de quatre méthodes d'écriture courantes pour les événements de clic sur un bouton Android

高洛峰
高洛峰original
2017-02-07 16:19:511192parcourir

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 .
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn