본문 바로가기
2022년

Dialog

by 박상윤 2021. 10. 22.

- 개발자가 필요할 때 사용자에게 메시지를 전달하는 용도로 사용하며 다이얼로그가 나타나 있을 때는 주변의 View를 사용할 수 없다.

 

- 메시지 전달이나 입력 등의 용도로 사용한다.

 

기본 다이얼로그

- 기본 다이얼로그는 메시지와 최대 3개의 버튼을 제공할 수 있다.

 

package com.sypark.dialog

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.appcompat.app.AlertDialog
import kotlinx.android.synthetic.main.activity_main.*

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

        button.setOnClickListener {
            var builder = AlertDialog.Builder(this)

            builder.setTitle("기본 다이얼로그")
            builder.setMessage("뭘봐 임마!")
            builder.setIcon(R.mipmap.ic_launcher)

            builder.setPositiveButton("Positive"){ dialoginterface,i ->
                textView.text = "Postivie 버튼을 눌렀습니다"
            }

            builder.setNeutralButton("Neutral"){ dialogInterface,i ->
                textView.text = "Neutral 버튼을 눌렀습니다"
            }
            builder.setNegativeButton("Negative"){ dialogInterface,i ->
                textView.text = "Negative 버튼을 눌렀습니다"
            }

            builder.show()
        }
    }
}

Negative 버튼 클릭한 경우

TextView가 변경된다.

 

 

커스텀 다이얼로그

- 기본 다이얼로그에 View를 설정하면 다이얼로그에 표시되는 모양을 자유롭게 구성할 수 있다.

 

package com.sypark.dialog

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.appcompat.app.AlertDialog
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.custom_dialog.*

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

        button.setOnClickListener {
            var builder = AlertDialog.Builder(this)

            builder.setTitle("기본 다이얼로그")
            builder.setMessage("뭘봐 임마!")
            builder.setIcon(R.mipmap.ic_launcher)

            builder.setPositiveButton("Positive"){ dialoginterface,i ->
                textView.text = "Postivie 버튼을 눌렀습니다"
            }

            builder.setNeutralButton("Neutral"){ dialogInterface,i ->
                textView.text = "Neutral 버튼을 눌렀습니다"
            }
            builder.setNegativeButton("Negative"){ dialogInterface,i ->
                textView.text = "Negative 버튼을 눌렀습니다"
            }

            builder.show()
        }

        button2.setOnClickListener {
            val builder = AlertDialog.Builder(this)
            builder.setTitle("커스텀 다이얼로그")
            builder.setIcon(R.mipmap.ic_launcher)

            val custom_view = layoutInflater.inflate(R.layout.custom_dialog,null)
            builder.setView(custom_view)

            builder.setPositiveButton("확인"){dialogInterface,i ->
                custom_view.run{
                    textView.text="${custom_edit1.text}\n"
                    textView.append("${custom_edit2.text}\n")
                }
            }

           builder.setNegativeButton("취소",null)

            builder.show()
        }
    }
}

 

오류 발생

오류 원인 -> custom_view.run{}부분 오류

DataPicker

- 다이얼로그를 통해 날짜를 선택할 수 있도록 제공되는 다이얼로그다.

 

button3.setOnClickListener {
            val calendar = Calendar.getInstance()

            val year = calendar.get(Calendar.YEAR)
            val month = calendar.get(Calendar.MONTH)
            val day = calendar.get(Calendar.DAY_OF_MONTH)

            val picker = DatePickerDialog(this,null,year,month,day)

            picker.show()
        }

TimePicker 사용

button4.setOnClickListener {
            val calendar = Calendar.getInstance()

            val hour = calendar.get(Calendar.YEAR)
            val minute = calendar.get(Calendar.MINUTE)

            val listener2 = TimePickerDialog.OnTimeSetListener{timePicker, i, i2 ->
                textView.text = "${i}시 ${i2}분"
            }

            val picker = TimePickerDialog(this,listener2,hour,minute,true)
            //true -> 24시간제 false -> 12시간제
            picker.show()
        }

 

학습정리

- 다이얼로그는 사용자에게 메시자나 화면을 제공할 수 있도록 하는 메시지 도구이다.

'2022년' 카테고리의 다른 글

프래그먼트 트랜잭션  (0) 2021.12.04
프래그먼트 관리자  (0) 2021.12.04
SnackBar  (0) 2021.10.22
Toast  (0) 2021.10.21
Activity Action  (0) 2021.10.21