Kotlin에서 setOnClickListener 사용

David Mbochi Njonge 2023년1월30일
  1. Kotlin에서 새 프로젝트 생성 및 버튼 추가
  2. Kotlin에서 콜백 없이 setOnClickListener() 사용
  3. Kotlin에서 콜백과 함께 setOnCliclListener() 사용
  4. Kotlin에서 Lambda 표현식과 함께 setOnClickListener() 사용
  5. Kotlin의 MainActivity 클래스에서 View.OnClickListener 인터페이스 사용
Kotlin에서 setOnClickListener 사용

setOnClickListener() 메소드는 이벤트 리스너입니다. 즉, 버튼 클릭과 같은 이벤트가 발생한 경우에만 호출됩니다. setOnClickListener()View 클래스의 메서드이며 이 클래스에서 상속되는 모든 클래스와 함께 사용할 수 있습니다.

이 자습서에서는 Button을 사용하여 작동 중인 메서드를 테스트합니다. Button 클래스는 TextView 클래스의 메서드를 상속하며, View 기본 클래스의 메서드도 상속합니다.

Kotlin에서 새 프로젝트 생성 및 버튼 추가

개발 환경으로 이동하여 빈 활동이 있는 새 Android 프로젝트를 만듭니다. Kotlin이 이 애플리케이션에 대해 선택된 언어인지 확인하십시오.

Button 컴포넌트를 생성하려면 Layout 폴더 아래의 activity_main.xml 파일로 이동하여 ConstraintLayout 안에 다음 XML 코드를 붙여넣습니다.

<Button
            android:text="Click me"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:id="@+id/click_me_btn"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"/>

Kotlin에서 콜백 없이 setOnClickListener() 사용

Kotlin의 MainActivity 클래스로 이동하여 setContentView() 메서드 바로 뒤에 있는 onCreate() 메서드에 다음 코드를 붙여넣습니다.

  val clickMeBtn: Button = findViewById(R.id.click_me_btn)

        clickMeBtn.setOnClickListener {
            val toast = Toast
                .makeText(applicationContext,
                "You have clicked me",
                Toast.LENGTH_SHORT).show()
        }

findViewById() 메서드는 해당 구성 요소에 고유한 ID를 사용하여 레이아웃에서 만든 버튼을 검색하는 데 도움이 됩니다. 이 메서드는 제네릭 메서드이기 때문에 View 클래스에서 상속된 모든 구성 요소를 검색할 수 있습니다.

setOnClickListener() 메소드는 콜백을 인수로 사용하지만 콜백을 전달하지 않고 이 메소드 내부에서 수행할 작업을 직접 추가합니다.

이는 메서드 뒤에 추가된 @Nullable 주석으로 가능합니다. 주석은 매개변수가 선택 사항이거나 null일 수 있음을 나타냅니다.

setOnClickListener() 메서드를 사용할 때 먼저 버튼을 클릭할 수 없는 경우 클릭할 수 있도록 설정합니다.

Toast 클래스의 makeText() 정적 메서드를 사용하여 텍스트를 생성했으며 이 메시지는 화면에 잠시 표시되었다가 사라집니다.

애플리케이션 실행

IDE 도구 모음의 오른쪽 상단에 있는 실행 아이콘을 눌러 응용 프로그램을 실행합니다. 다음 이미지는 실행 버튼의 위치를 ​​보여줍니다.

실행중인 응용 프로그램

그러면 응용 프로그램이 실행되고 가상 장치가 실행되고 가상 장치에 설치됩니다. CLICK ME 버튼을 누르면 아래와 같이 화면 하단에 You have clicked me라는 메시지가 표시됩니다.

코틀린 토스트 메시지

Kotlin에서 콜백과 함께 setOnCliclListener() 사용

이전 예에서 언급했듯이 setOnClickListener() 메소드에는 onClick() 메소드에 대한 콜백인 View.OnClickListener 옵션 매개변수가 있습니다.

MainActivity 클래스로 이동하여 setContentView() 메서드 바로 아래에 있는 onCreate() 메서드에 다음 코드를 붙여넣습니다. 이전 예에 대해 주석을 달아야 합니다.

 val clickMeBtn: Button = findViewById(R.id.click_me_btn)

 clickMeBtn.setOnClickListener(object : View.OnClickListener{
            override fun onClick(view: View?) {
                val toast = Toast
                    .makeText(applicationContext,
                    "You have clicked me",
                    Toast.LENGTH_SHORT).show()
            }
        })

위의 예에서 View.OnClickLictener 콜백을 메서드에 전달하고 onClick() 메서드를 재정의했습니다.

onClick() 메소드에는 클릭한 보기를 나타내는 View 유형의 매개변수가 있습니다. onClick() 내부의 보기를 사용하여 배경색 변경과 같은 모든 메서드를 실행할 수 있습니다.

이 예에서는 이전 예에서와 같이 Toast 메시지를 표시했습니다. 애플리케이션을 실행하고 테스트하는 데 사용한 것과 동일한 단계를 사용하면 동일한 결과를 얻을 수 있습니다.

Kotlin에서 Lambda 표현식과 함께 setOnClickListener() 사용

이 예제는 위에서 다룬 것과 유사하지만 콜백의 onClick() 메서드를 재정의하는 대신 람다 식으로 변환합니다.

MainActivity 클래스로 이동하여 setContentView() 메서드 바로 뒤에 있는 onCreate() 메서드에 다음 코드를 붙여넣습니다. 이전 예에 대해 주석을 달아야 합니다.

 val clickMeBtn: Button = findViewById(R.id.click_me_btn)

 clickMeBtn.setOnClickListener(View.OnClickListener { view ->
            Toast.makeText(applicationContext,
                "You have clicked me",
            Toast.LENGTH_SHORT).show()
         })

클릭한 view에 액세스할 수 있으므로 모든 방법을 실행할 수 있지만 이 예에서는 Toast 메시지만 표시합니다.

첫 번째 예제를 실행하고 테스트하는 데 사용한 것과 동일한 단계를 사용하면 다른 예제에서 보았듯이 화면에 Toast 메시지가 표시됩니다.

Kotlin의 MainActivity 클래스에서 View.OnClickListener 인터페이스 사용

View.OnClickListener 콜백은 인터페이스이며 아래와 같이 MainActivity 클래스에서 이 인터페이스를 구현할 수 있습니다.

class MainActivity : AppCompatActivity(), View.OnClickListener {
}

인터페이스를 구현한 후에는 이 클래스 내에서 onClick() 메서드를 구현해야 합니다. MainActivity 클래스 내부에 다음 코드를 복사하여 붙여넣습니다.

    override fun onClick(view: View?){
        when(view?.id){
            R.id.click_me_btn -> {
                Toast.makeText(applicationContext,
                "You have clicked me",
                Toast.LENGTH_SHORT).show()
            }
        }
    }

onClick() 메서드는 클릭한 보기에 대한 액세스를 제공하지만 id로 구성 요소를 검색하지 않으므로 switch 문과 동일한 방식으로 작동하는 when 문을 사용하여 식별해야 합니다. 클릭한 구성 요소입니다.

idclick_me_btn의 id와 일치하면 화살표 함수 내에서 뒤에 오는 기능이 실행됩니다. 이 예에서는 화면에 Toast 메시지만 표시합니다.

이전 예제를 실행하고 테스트하는 데 사용한 것과 동일한 단계를 사용합니다. 이 예는 예상한 것과 동일한 결과를 표시합니다.

David Mbochi Njonge avatar David Mbochi Njonge avatar

David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.

LinkedIn GitHub