【Android】ボタンイベントを処理するには

■ はじめに

イベント・ハンドルでもするかっと思ってみたりする。

■ ボタンのクリック・イベントを処理するには

色々な方法があるが、ここでは...

 * 追加したボタンに対して、setOnClickListener イベントを実装する

■ サンプル

 例1:Hello world

activity_main.xml

 * ボタン「button1」を「activity_main.xml」に追加する

MainActivity.㏏

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

class MainActivity : AppCompatActivity() {
    private lateinit var realm: Realm

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

        // ★ここに注目★
        button1.setOnClickListener {
            Toast.makeText(this, "クリックしました", Toast.LENGTH_SHORT).show()
        }
    }
}

例2:掛け算クイズ

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*
import java.util.*

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

        createQuestion()

        answerButton.setOnClickListener {
            val input = inputEditText.text.toString().toIntOrNull()
            val message = when(input) {
                null -> "Please input a number"
                answer -> "Bingo!"
                else -> "X"
            }
            Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
            createQuestion()
        }
    }

    fun createQuestion() {
        inputEditText.text.clear()

        val random = Random()
        val num1 = random.nextInt(10)
        val num2 = random.nextInt(10)

        answer = num1 * num2
        questionTextView.text = "$num1 x $num2 = ?"
    }
}

 参考文献

http://www.javadrive.jp/android/button/index4.html
http://d.hatena.ne.jp/jitsu102/20110831/1314796481

関連記事

画面遷移をするには
https://dk521123.hatenablog.com/entry/2013/09/26/010117
別画面への値の受け渡し
https://dk521123.hatenablog.com/entry/2013/09/27/230328
ダイアログ表示 ~ トースト / Toast ~
https://dk521123.hatenablog.com/entry/2013/10/14/002656
画面コンポーネント / Button
https://dk521123.hatenablog.com/entry/2020/08/08/000000