[Develop]/[Android]

[Android] 개발 시작하기 - Kotlin 다이얼로그 버튼 추가

lg2ivl3 2025. 9. 14. 21:13

해당 포스트는 이전 포스트에서 이어지는 포스트임으로 시작 전 하단의 링크에서 다이얼로그를 생성하는 방법을 확인하자.

 

 

[Android] 개발 시작하기 - Kotlin 다이얼로그로 새 창 띄우기

대화상자 | Views | Android Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. 대화상자 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Compose 사용해

lg2ivl3.tistory.com

 

1. 다이얼로그 버튼 추가

기본적으로 다이얼로그에 버튼은 세 가지가 존재한다.

  • 긍정: 작업을 수락하고 계속 진행하는 데 사용합니다('OK' 작업).
  • 음수: 작업을 취소하는 데 사용합니다.
  • 중립: 사용자가 작업을 계속하고 싶지 않지만 취소하고 싶지는 않은 경우에 사용합니다. 이것은 긍정적 버튼과 부정적 버튼 사이에 나타납니다. 예를 들어 '나중에 알림'과 같은 작업이 있습니다.

또한 각 버튼은 하나씩만 추가 가능하다.(예를 들어서 '긍정' 버튼이 두 개 이상 존재할 수 없다.) 버튼을 추가하는 방법은 아래와 같다. 결과적으로 하나의 다이얼로그당 버튼은 총 3개까지 존재 가능하며, 다이얼로그 코드 내부에 아래의 코드를 추가하면 된다.

.setPositiveButton("Positive") { dialog, which ->
    // Do something.
}
.setNegativeButton("Negative") { dialog, which ->
    // Do something else.
}
.setNeutralButton("Neutral") { dialog, which ->
     // Do something else.
}

 

2. 동작 확인

버튼이 정상적으로 추가된 것을 확인할 수 있다. 현재는 버튼을 클릭해도 어떠한 동작도 하지 않지만 다음 포스트에서 각 버튼에 맞는 기능을 추가해보자.

전체 코드는 아래와 같다.

package com.application.myapplication

import android.os.Bundle
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import android.widget.Button
import androidx.appcompat.app.AlertDialog

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_main)
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }
        val testButton  : Button = findViewById(R.id.button)
        testButton.setOnClickListener {
            val builder: AlertDialog.Builder = AlertDialog.Builder(this)
            builder
                .setMessage("I am the message")
                .setTitle("I am the title")
                .setPositiveButton("Positive") { dialog, which ->
                    // Do something.
                }
                .setNegativeButton("Negative") { dialog, which ->
                    // Do something else.
                }
                .setNeutralButton("Neutral") { dialog, which ->
                    // Do something else.
                }

            val dialog: AlertDialog = builder.create()
            dialog.show()
        }
    }
}