101010

プログラミング備忘録とともに、ポエムってます。

OnClickListenerを使わずにボタンイベントをフックする | Android Kotlin

追記(3/6)

本ブログで説明しているonClick属性だが、Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)によればProGuard(難読化処理)を施した際にクリックイベントが取得できなくなるようだ。onClick属性を利用する場合には、この事に十分気をつけてもらいたい。

元記事

Google Developerのガイドを読んでいたら便利な機能を見つけたのでメモしておく。

val button: Button = findViewById(R.id.button_send)
button.setOnClickListner {}

今までボタンクリックのイベントはこのようにしてフックしていたが、実はもっと簡単な方法があった。

まずボタンのレイアウトコードのonClick属性に呼び出したいメソッド名を記述する。

f:id:araemonz:20190227204823j:plain
activity_main.xml

図のようにandroid:onClick="sendMessage"と記述した。そしてレイアウトを利用するクラス、ここではMainActivityクラスに次のように記述する。

fun sendMessage(view:View) {
    val messageTextView = findViewById<TextView>(R.id.message_text)
    messageTextView.text = "Clicked!"
}

XcodeのIBActionと同じ感覚でクリックイベントを実装することができた。

DataBindingを利用すればさらにTextViewのfindViewByIdも無くすことができるだろう。

参考

https://developer.android.com/guide/topics/ui/controls/button?hl=ja