未分類

Android – イベント・リスナーで、複数のボタンを扱う

準備

(なし)

デザイン

1. main.xml にボタン (button1) を配置します。
2. main.xml にボタン (button2) を配置します。

サンプルコード (Java)

package com.test.test01;

import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class Test01Activity extends Activity {

  private Button b1;
  private Button b2;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    b1 = (Button)findViewById(R.id.button1);
    b1.setOnClickListener(b1_listener);

    b2 = (Button)findViewById(R.id.button2);
    b2.setOnClickListener(b2_listener);
  }

  Button.OnClickListener b1_listener = new Button.OnClickListener() {
    public void onClick(View view) {
      AlertDialog.Builder ad = new AlertDialog.Builder(Test01Activity.this);
      ad.setTitle("TEST01");
      ad.setMessage("1 番目のボタンがクリックされました。");
      ad.setPositiveButton("OK", null);
      ad.show();
    }
  };

  Button.OnClickListener b2_listener = new Button.OnClickListener() {
    public void onClick(View view) {
      AlertDialog.Builder ad = new AlertDialog.Builder(Test01Activity.this);
      ad.setTitle("TEST01");
      ad.setMessage("2 番目のボタンがクリックされました。");
      ad.setPositiveButton("OK", null);
      ad.show();
    }
  };
}

解説

イベント・リスナーを使用して複数のボタンを扱っています。ひとつの Activity 内に配置できる OnClick イベントは一つのため、各ボタン用のリスナーオブジェクトを作成して、その中に OnClick イベントを作成しています。

AlertDialog.Builder の引数は、Activity 自体なので、this だけを指定すると、イベント・リスナーを指定することになりますので、Test01Activity.this のように指定しています。

この場合、Test01Activity クラスではイベント・リスナーは扱わないため、implements OnClickListener によるイベント・リスナーの実装は不要です。

結果

-未分類