Androidアプリ開発入門③:ボタンを押して動かすイベント処理

前回は、Androidアプリの画面設計(レイアウトとUI設計)について学びました。画面にボタンやテキストを配置できるようになると、次に挑戦したいのが「動作をつける」ことです。

アプリがユーザーとやりとりするためには、イベント処理が必要です。例えば「ボタンを押したら文字が変わる」「チェックボックスを選んだら表示が切り替わる」といった仕組みです。

この記事では、Androidアプリの基本的なイベント処理を、Kotlinを使った実例を交えながら解説します。初心者でも理解しやすいように、ボタンのクリックイベントを中心に紹介しますので、ぜひ一緒に手を動かしてみてください。


イベント処理とは?

アプリの操作は「ユーザーのアクション」と「アプリの反応」の組み合わせで成り立ちます。

  • ユーザーのアクション:ボタンを押す、画面をタップする、文字を入力する
  • アプリの反応:テキストを変える、画面を切り替える、音を鳴らす

この「ユーザーのアクション」に対して「どんな処理をするか」を書くことを イベント処理 と呼びます。

Androidでは、最も基本的なイベントが クリックイベント(onClick) です。


ボタンを押してテキストを変える(基本例)

まずはシンプルな例として「ボタンを押すとテキストが変わる」アプリを作ってみましょう。

1. XMLレイアウト

<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="まだ押されていません"
        android:textSize="20sp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintBottom_toTopOf="@id/button"
        android:layout_marginBottom="32dp"/>

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="押してみよう"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

画面中央に「テキスト」、下に「ボタン」を配置しました。

2. Kotlinコード

package com.example.eventsample

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.TextView

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 部品を取得
        val textView: TextView = findViewById(R.id.textView)
        val button: Button = findViewById(R.id.button)

        // ボタンが押されたときの処理
        button.setOnClickListener {
            textView.text = "ボタンが押されました!"
        }
    }
}

これで、ボタンを押すとテキストの内容が変わります。


setOnClickListenerを理解しよう

イベント処理でよく使うのが setOnClickListener です。

button.setOnClickListener {
    // ボタンが押されたときの処理を書く
}

{ } の中に書かれた処理が、ボタンを押したときに実行されます。

例えば:

button.setOnClickListener {
    textView.text = "押した回数: 1"
}

このようにすると、ボタンを押すとテキストが「押した回数: 1」に変わります。


ボタンを押すたびにカウントアップする

もう少し発展させて「押すたびにカウントアップする」例を作ってみましょう。

var count = 0

button.setOnClickListener {
    count++
    textView.text = "押した回数: $count"
}

このように変数を使うことで、押すたびに数字が増えていく仕組みを作れます。
アプリらしさがぐっと出てきますね。


複数のボタンを使う場合

ボタンが複数ある場合は、それぞれにイベント処理を設定します。

val button1: Button = findViewById(R.id.button1)
val button2: Button = findViewById(R.id.button2)

button1.setOnClickListener {
    textView.text = "ボタン1が押されました"
}

button2.setOnClickListener {
    textView.text = "ボタン2が押されました"
}

このように、ボタンごとに動作を分けられます。


onClick属性を使う方法

XMLに直接イベントを指定することもできます。

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="押してね"
    android:onClick="onButtonClick"/>

そして、Kotlin側に以下を追加します。

fun onButtonClick(view: View) {
    val textView: TextView = findViewById(R.id.textView)
    textView.text = "onClickで処理しました"
}

ただし、コードが増えてくると管理が大変になるため、通常は setOnClickListener を使うのがおすすめです。


よくあるエラーと解決法

イベント処理を学ぶと、次のようなエラーに出会うことがあります。

  • 「Unresolved reference」エラー
    findViewById で取得した部品の型が間違っている可能性があります。
    (TextViewをButtonにキャストしている、など)
  • ボタンを押しても反応しない
    → XMLで id が正しく設定されているか確認しましょう。
  • アプリが強制終了する
    → nullの部品にアクセスしている可能性があります。レイアウトとコードの対応をチェックしてください。

まとめ

今回は、Androidアプリ開発における イベント処理と基本コード を解説しました。

  • イベント処理とは「ユーザー操作」に対して「アプリの反応」を記述すること
  • setOnClickListener を使うのが基本
  • 押すたびにカウントアップするなど、変数と組み合わせると応用できる
  • 複数のボタンにもそれぞれ動作を設定できる

これで「ユーザーが操作できるアプリ」を作る基礎が身につきました。

次回は「データを扱うアプリを作成:入力フォームと保存の仕組み」をテーマに、ユーザーが入力した内容を保存する方法を解説します。アプリが一気に実用的になりますので、ぜひ続けて学んでみましょう。

タイトルとURLをコピーしました