Heim > Java > javaLernprogramm > Zusammenfassung von vier gängigen Schreibmethoden für Android-Schaltflächenklickereignisse

Zusammenfassung von vier gängigen Schreibmethoden für Android-Schaltflächenklickereignisse

高洛峰
Freigeben: 2017-02-07 16:19:51
Original
1207 Leute haben es durchsucht

Viele Leute, die Android-Programmierung studieren, werden feststellen, dass jeder unterschiedliche Vorlieben für das Schreiben von Code hat. Das offensichtlichste ist die unterschiedliche Art, Steuerelemente zu schreiben, um auf Ereignisse zu reagieren. Daher fasst dieser Artikel diese Schreibmethoden zusammen und vergleicht die Vor- und Nachteile verschiedener Schreibmethoden. Ich hoffe, dass die flexible Auswahl der Codierungsmethoden für jeden von großem Nutzen sein kann.

Der XML-Dateicode lautet wie folgt:

<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" />
Nach dem Login kopieren

Die vier Methoden werden wie folgt beschrieben:

Anonyme innere Klasse:

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();
      }
    });
  }
}
Nach dem Login kopieren

Benutzerdefiniert Click-Ereignis-Listener-Klasse:

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());
  }
}
Nach dem Login kopieren

Aktivität erbt View.OnClickListener und die Aktivität implementiert die OnClick-Methode (Ansichtsansicht). In der OnClick-Methode (Ansichtsansicht) wird Switch-Case verwendet, um auf die zu reagieren Schaltflächen werden durch unterschiedliche IDs dargestellt. Verarbeitung

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;
    }
  }
}
Nach dem Login kopieren

Die letzte Methode ist eine Schreibmethode, die ich heute gesehen habe und die darin besteht, „das onClick-Attribut der angegebenen Schaltfläche in der XML-Datei anzuzeigen, sodass, wenn die Schaltfläche angezeigt wird Wenn Sie darauf klicken, wird der Klick in der entsprechenden Aktivität mithilfe der Reflection()-Methode aufgerufen Wenn Sie „android:onClick=" eingeben und Alt+/ drücken, wird keine onClick-Eingabeaufforderung angezeigt. Wenn Sie die Option „onClick“ wählen, hatte ich plötzlich das Gefühl, dass hier etwas nicht stimmt.

<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" />
Nach dem Login kopieren

Diese Schreibweise kann das Klickereignis realisieren der Schaltfläche, ohne die Schaltfläche im gesamten Code zu deklarieren

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;
    }
  }
}
Nach dem Login kopieren
Die oben genannten vier Implementierungen der Schaltflächen-Klick-Ereignismethode sind, dass es schneller ist, anonyme interne Klassen zu verwenden Es gibt nur wenige Schaltflächen, beispielsweise beim Schreiben von Demotests oder Anmeldeschnittstellen. In den meisten Fällen wähle ich immer noch die dritte Methode, die bequemer ist.

Was die vierte Methode betrifft, ist sie meiner Meinung nach die bequemste. Aber nachdem ich viele Codes gelesen habe, bin ich immer noch der Meinung, dass die Schreibmethode nicht beliebt genug ist. Ich hoffe, dass dieser Artikel hilfreich sein wird zum Erlernen der Android-Programmierung

Weitere verwandte Artikel, die die vier gängigen Methoden zum Schreiben von Android-Button-Klickereignissen zusammenfassen. Bitte beachten Sie die chinesische PHP-Website
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage