ホームページ > Java > &#&チュートリアル > Android のボタン クリック イベントの一般的な 4 つの記述方法のまとめ

Android のボタン クリック イベントの一般的な 4 つの記述方法のまとめ

高洛峰
リリース: 2017-02-07 16:19:51
オリジナル
1198 人が閲覧しました

Android プログラミングを学習する多くの人は、コードの記述方法について人によって好みが異なることに気づくでしょう。最も明らかなのは、イベントに応答するコントロールの記述方法が異なることです。そこで、この記事では、これらの記述方法をまとめ、さまざまな記述方法のメリットとデメリットを比較し、皆様が柔軟にエンコード方法を選択する際の参考になれば幸いです。

xml ファイルのコードは次のとおりです:

<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" />
ログイン後にコピー

4 つのメソッドは次のように説明されます:

匿名内部クラス:

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();
      }
    });
  }
}
ログイン後にコピー

カスタム クリック イベント リスニング クラス:

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 は View.OnClickListener を継承し、Activity は OnClick(View view ) メソッドで、OnClick (View view) メソッドで switch-case を使用して、異なる ID で表されるボタンをそれに応じて処理します

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;
    }
  }
}
ログイン後にコピー

最後の方法は、今日見た方法です。XML ファイルで「指定されたボタンの onClick 属性を表示し、そのため、ボタンがクリックされると、対応するアクティビティの click() メソッドがリフレクションを使用して呼び出されます。」

<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" />
ログイン後にコピー

ここで、「android:」と入力した後に Alt+/ を押すと、onClick 属性のプロンプトが表示されますが、 android:onClick = と入力して Alt+/ を押しても onClick オプションが表示されず、急に何か問題があるような気がしました

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;
    }
  }
}
ログイン後にコピー

この書き方だと、ボタンを宣言せずにボタンのクリックイベントを実現できます。コード全体

上記はボタン クリック イベントを実装する 4 つの方法です

大まかにまとめると、デモ テストやログイン インターフェイスを作成する場合など、ボタンが少ない場合は匿名内部クラスを使用する方が高速です。

ボタンが多い場合は今でも3番目の方法が便利です

4番目の方法が一番便利だと思いますが、コードをたくさん読んだ後では、まだ書き方が不十分だと感じます。これを学ぶことで多くのメリットがあると信じています

この記事が皆さんの Android プログラミングの学習に役立つことを願っています

Android ボタンのクリック イベントを記述する 4 つの一般的な方法をまとめたその他の関連記事については、 PHP 中国語 Web サイトにご注意ください

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート