【コピペで使える Kotlin】キーボードハンドリング
【コピペで使える Kotlin】キーボードハンドリング
キーボードハンドリングを行う
アンドロイドアプリ制作をしていると、戻るボタンを押した時のハンドリングがしたくなる時があります。この記事では、コピペで利用できるコードをActuvity用、Fragment用でそれぞれ書きます。
Fragment側ではハンドリングが実装されていないので、Fragmentの拡張メソッドを作りました。 引数の
Activity用
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
// code whatever you like here...
return super.onKeyUp(keyCode, event)
}
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
// code whatever you like here...
return super.onKeyDown(keyCode, event)
}
Fragment用
fun Fragment.onKeyUp(v: View, action: () -> Unit) {
v.setOnKeyListener { _, code, keyEvent ->
if (code == KeyEvent.KEYCODE_BACK && keyEvent.action == KeyEvent.ACTION_UP) {
action()
return@setOnKeyListener true
}
return@setOnKeyListener false
}
v.isFocusableInTouchMode = true
v.requestFocus()
}
fun Fragment.onKeyDown(v: View, action: () -> Unit) {
v.setOnKeyListener { _, code, keyEvent ->
if (code == KeyEvent.KEYCODE_BACK && keyEvent.action == KeyEvent.ACTION_DOWN) {
action()
return@setOnKeyListener true
}
return@setOnKeyListener false
}
v.isFocusableInTouchMode = true
v.requestFocus()
}
利用する時は onViewCreated() の中に書きます。
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
onKeyUp(view) {
// code whatever you like here...
}
onKeyDown(view) {
// code whatever you like here...
}
}
0 コメント