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

高洛峰
高洛峰Original
2017-02-07 16:19:511198Durchsuche

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" />

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();
      }
    });
  }
}

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());
  }
}

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;
    }
  }
}

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" />

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;
    }
  }
}
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
Stellungnahme:
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