ココでわかるAndroidアプリ開発

あなたのプログラミングを徹底サポート

【Android】ボタンでクリックイベントを実装する方法

  • 作成日:2022/01/21

ボタン押下時にイベントを発生させる方法です。 なるべくわかりやすく丁寧に説明します。

クリックイベントのやり方

ボタン押下時のクリックイベントはいくつか書き方がありますが、やることは同じです。

  • ボタンにリスナーを登録する(setOnClickListener)
  • ボタン押下時の処理を書く(onClick)

これらを実現するための書き方ですが、主に以下のような書き方があります。

  • OnClickListenerインタフェースを継承する方法
  • 無名クラスを使う方法

インターフェースや無名クラスについて、よくわからない方は以下で解説しているので参考にしてください。

では、解説していきます。

OnClickListenerインタフェースを継承する方法

ボタンクリックを実装したいクラスにOnClickListenerインターフェースを継承する方法です。 まず、レイアウトファイルは次のようにボタンを1つだけ設置するとします。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btn"
        android:layout_width="300dp"
        android:layout_height="100dp"
        android:layout_marginTop="20dp"
        android:text="sample"
        android:layout_gravity="center"
        android:textSize="30sp"
        />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

次にソースコードです。ボタン押下時にログ出力をする単純なコードです。

MainActivity.java

package com.example.androidkoko;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn1 = findViewById(R.id.btn);
        btn1.setOnClickListener(this);

    }
    @Override
    public void onClick(View view) {
        Log.d("ログ出力:", "ボタンが押下されました");
    }
}  

まず、View.OnClickListenerインターフェースをimplementsを使い継承します(12行目)。 クリックイベントを使う事前準備みたいなものです。

次に、クリックイベントを実装するために、リスナーをボタンに登録します。 20行目のsetOnClickListenerでリスナーをボタンに組み込んでいます。 引数はView.OnClickListener型のインスタンスです。 自分自身のクラスがOnClickListenerを継承しているので、引数はthisでOKです。 これでボタンにリスナーが追加されました。

ボタン押下時に実行されるのがonClickメソッドです。 onClickは12行目で継承したOnClickListenerインターフェースのメソッドなので、オーバーライドします(24行目)。 このonClickメソッドの中身がボタン押下時に実行される処理です。

少し難しいかもしれませんが、イメージとしてはこんな感じです。

ボタンクリックイベントのイメージ

無名クラスを使う方法

無名クラスを使えばOnClickListenerインターフェースを継承しなくてもクリックイベントを実装できます。

レイアウトファイルは先ほどと同じくボタンを1つ配置しているものとします。ソースコードは以下のようになります。

MainActivity.java

package com.example.androidkoko;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn1 = findViewById(R.id.btn);
        btn1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                Log.d("ログ出力:", "ボタンが押下されました");
            }
        });
    }
}  

20行目のsetOnClickListenerでボタンにリスナーを登録します。 引数はView.OnClickListene型のインスタンスなので、ここで無名クラスを宣言します。

OnClickListeneインターフェースはonClickメソッドを持っているので忘れずにオーバーライドしましょう。 これがクリックイベントの処理になります。

この記事のシェアはこちらから

カテゴリー

カテゴリーの一覧です。

Contact

当サイトへのご連絡は以下よりお願いします。

© Copyright 2022 ココでわかるAndroidアプリ開発