[Androidアプリ開発入門] ボタンのクリックイベントを取得する

サエコ
ボタンをタップした時に処理を実行したいわよ〜。
キャミィ
ボタンのクリックイベントを取得して、その中で処理を実行すればいいわ。

Androidアプリ開発においては、ボタンをタップした時のイベントを取得して何らかの処理を実行したい、ということが良くあります。実装方法はいくつかありますが、最もシンプルな方法を紹介します。

まずはレイアウトファイルにボタンを追加します。ボタンを追加するためには、Buttonを使います。この時、idを指定する必要があります。このレイアウトではボタンのidをbuttonとして指定しています。idを指定することで、コードからViewを参照できるようになります。

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

    <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"/>

</android.support.constraint.ConstraintLayout>

レイアウトファイルにボタンを追加したら、コードを書きます。ActivityのonCreateに、先ほどレイアウトファイルにおいて指定したid、「button」と入力したら、option + enterでimport文を追加します。すると、コードからレイアウトファイルで定義したボタンを参照できるようになります(KotlinのAndroid Extensionsという機能を使っています)。buttonが参照できるようになったら、setOnClickListenerを呼び出し、以下のように、波括弧の中にボタンをタップした時に実行したい処理を書けばOKです。

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        button.setOnClickListener { 
            // do something here
        }
    }
}