Android Studioでアプリ開発!

Androidアプリ開発初心者の備忘録です。

ボタンクリックイベントを取得する

ボタンクリック時に何らかの処理を実行したい

ボタンクリックはユーザからの入力操作の1つです。アプリ側はこれをきっかけに画面を遷移したりデータを保存したりします。
今回は、入力操作の基本であるボタンクリックイベントを取得する方法について説明したいと思います。

ボタンクリック時のイベント取得方法

ボタンクリック時のイベントを取得する方法には大きく3つあります。
1.ボタンに OnClickListener インターフェースを実装する
2.アクティビティに OnClickListener インターフェースを実装する
3.レイアウトファイルにボタンクリック時のメソッドを記述する
以下で具体的に説明します。

1.ボタンに OnClickListener インターフェースを実装する

クリックイベントを取得したいボタンに OnClickListener インターフェースを実装します。

// クリックイベントを取得したいボタン
Button button = (Button) findViewById(R.id.button);

// ボタンに OnClickListener インターフェースを実装する
button.setOnClickListener(new View.OnClickListener() {

    // クリック時に呼ばれるメソッド
    @Override
    public void onClick(View view) {
        Toast.makeText(MyActivity.this, "クリックされました!", Toast.LENGTH_LONG).show();
    }
});

これでボタンがクリックされたときに Toast を表示する処理を実行することができます。
クリックイベントを取得するボタンが少ない場合に最適な方法だと思います。

2.アクティビティに OnClickListener インターフェースを実装する

ボタンクリックイベントを取得したいアクティビティに implements で View.OnClickListener インターフェースを実装します。

public class MyActivity extends Activity implements View.OnClickListener{

ボタンがクリックされたときに呼ばれるメソッドを追加します。

// クリック時に呼ばれるメソッド
public void onClick(View view){
    switch (view.getId()) {
        case R.id.button:
            Toast.makeText(MyActivity.this, "クリックされました!", Toast.LENGTH_LONG).show();
            break;
    }
}

これでボタンがクリックされたときに Toast を表示する処理を実行することができます。
また、引数の view によりクリックイベントが発生したビューが分かるので、ボタンごとに実行させたい処理をまとめてこのメソッドに記述することができます。

3.レイアウトファイルにボタンクリック時のメソッドを記述する

レイアウトファイルの "onClick=" にクリックイベントを取得するメソッドを記述します。例では onButtonClick メソッドを指定しています。

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/lbl_button"
    android:onClick="onButtonClick"
    android:id="@+id/button" />

アクティビティにクリックイベントを取得するメソッドを追加します。

// クリック時に呼ばれるメソッド
public void onButtonClick(View view){
    switch (view.getId()) {
        case R.id.button:
            Toast.makeText(MyActivity.this, "クリックされました!", Toast.LENGTH_LONG).show();
            break;
    }
}

これでボタンがクリックされたときに Toast を表示する処理を実行することができます。
また、引数の view によりクリックイベントが発生したビューが分かるので、ボタンごとに実行させたい処理をまとめてこのメソッドに記述することができます。
この方法だと、ボタンやアクティビティに OnClickListener インターフェースを登録する必要がないのでプログラムコードとしてはスッキリします。ただし、レイアウトファイルに記述したメソッドとアクティビティのメソッドを一致させておく必要があるので、メンテナンス性は悪くなるかもしれません。

まとめ

ボタンクリックイベントを取得するには3種類の方法がありました。それぞれ実行結果は同じになりますが、実装方法には特徴があります。クリックイベントを取得したいボタンの個数やメンテナンスのしやすさを考慮した上で使い分けるのが良いと思います。

参考

Toast を使って画面に情報を表示する方法 - Android Studioでアプリ開発!


Android StudioではじめるAndroidプログラミング入門

Android StudioではじめるAndroidプログラミング入門

初歩からわかるAndroid最新プログラミング 増補改訂版

初歩からわかるAndroid最新プログラミング 増補改訂版