Kotlin

1. Kotlin 버튼 사용 OnClickListener

Machine_웅 2020. 12. 17. 13:47
728x90
반응형
package kr.co.eowork.Kotlin_test

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.Toast

class MainActivity : AppCompatActivity(), View.OnClickListener {

    var btn1 : Button? = null
    var btn2 : Button? = null
    var btn3 : Button? = null
    var btn4 : Button? = null
    var btn5 : Button? = null
    var btn6 : Button? = null
    var btn7 : Button? = null
    var btn8 : Button? = null



    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContentView(R.layout.activity_main)
        btn1 = findViewById<Button>(R.id.button)
        btn2 = findViewById<Button>(R.id.button2)
        btn3 = findViewById<Button>(R.id.button3)
        btn4 = findViewById<Button>(R.id.button4)
        btn5 = findViewById<Button>(R.id.button5)
        btn6 = findViewById<Button>(R.id.button6)
        btn7 = findViewById<Button>(R.id.button7)
        btn8 = findViewById<Button>(R.id.button8)

        btn1!!.setOnClickListener(this)
        btn2!!.setOnClickListener(this)
        btn3!!.setOnClickListener(this)
        btn4!!.setOnClickListener(this)
        btn5!!.setOnClickListener(this)
        btn6!!.setOnClickListener(this)
        btn7!!.setOnClickListener(this)
        btn8!!.setOnClickListener(this)

    }

    override fun onClick(v: View?) {
        // java는 switch 문을 썻지만 코틀린은 when을 사용
        when (v?.id) {
            R.id.button -> {
                Toast.makeText(this,"버튼 1",Toast.LENGTH_SHORT).show()
            }
            R.id.button2 -> {
                //your code
            }
            R.id.button3 -> {
                //your code
            }
            R.id.button4 -> {
                //your code
            }
            R.id.button5 -> {
                //your code
            }
            R.id.button6 -> {
                //your code
            }
            R.id.button7 -> {
                //your code
            }
            R.id.button8 -> {
                //your code
            }
            else -> {
            }
        }
    }
}

1. btn1 = findViewById<Button>(R.id.button)  처럼 뷰를 초기화 해준다.

2. View.OnClickListener 를 implement 해준다 

3. btn1!!.setOnClickListener(this) 리스너를 등록해준다.

4. onClick 을 구현해준다 

( when 을 사용하여 구분지어서 버튼마다 처리할 이벤트를 만든다.)

 

*

!! 연산자의 역할은 어떠한 값이든 Non-null 타입으로 변경하며,

Null이 값으로 들어오면 exception을 발생시킨다고 되어 있다.
즉, !! 연산자는 Null 값이 들어가서는 안되고, NPE가 필요한 경우에 사용할 수 있는 연산자라는 결론이 나온다.


출처: https://like-tomato.tistory.com/234 [토마토의 일상 얘기]

 

728x90
반응형