LANGUAGE/Kotlin

[Kotlin] button action > listener, onClick

보겸삼촌 2020. 6. 26. 01:33

# 개발환경

tool : android studio 4.0
os : windows 10 pro 64-bit

 

 

# 배경

버튼의 액션을 사용하기 위해서 다음 두 가지 방식으로 설정할 예정

▶ .kt    > 리스너 ( listener )
▶ .xml  > onClick

 

 

.kt > 리스너를 이용하는 방법

// app > java > package > MainActivity

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


        // 방법 1-1: 리스너
        // login.setOnClickListener(View.OnClickListener { onbtnClicked() })

        // 방법 1-2: 리스너 - 람다식
        login.setOnClickListener { btnClicked() }
    }
    
    // 클릭 이벤트
    fun btnClicked(){
        val intent = Intent(this, SecondActivity::class.java)
        startActivity(intent)
    }
}

  람다식과 일반식으로 설정할 수 있는데 보통 람다식을 이용함

 

 

 

 

.xml > onClick 속성을 이용하는 방법

# app > res > layout > activity_second.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SecondActivity">

    <Button
        android:id="@+id/backBtn"
        android:onClick="backBtnClicked"
        android:layout_width="100dp"
        android:layout_height="0dp"
        android:text="뒤로가기"
        android:textStyle="bold"
        android:textColor="#fff"
        android:fontFamily="sans-serif-light"
        android:layout_marginTop="50dp"
        android:background="@drawable/btn_rounded_corner_gray"
        app:layout_constraintTop_toBottomOf="@+id/tv1"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        />
</androidx.constraintlayout.widget.ConstraintLayout>

 

  - button id를 설정해주어야 함

  - onClick 메소드에 SecondActivity.kt에서 수행할 메소드의 이름을 넣음

 

 

// app > java > package > SecondActivity.kt

import ..

class SecondActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)
    }

	//뒤로가기 버튼 액션
	fun backBtnClicked(view: View){
    	//TODO action
        finish()
    }
}