- 개발자가 필요할 때 사용자에게 메시지를 전달하는 용도로 사용하며 다이얼로그가 나타나 있을 때는 주변의 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 |