카테고리 없음
[Android] 코틀린 kotlin 다이얼로그 만들기
플래시🦥
2023. 4. 3. 15:23
반응형
기본
버튼을 눌렀을 때 다이얼로그가 뜨는 방법은 아래와 같다.
edit()는 onclick 함수이다.
fun edit(view: View) {
val builder = AlertDialog.Builder(this)
builder.setTitle("타이틀 입니다.")
.setMessage("메세지 내용 입니다.")
.setPositiveButton("확인",
DialogInterface.OnClickListener { dialog, id ->
})
.setNegativeButton("취소",
DialogInterface.OnClickListener { dialog, id ->
})
builder.show()
}
이렇게 하면 아래와 같은 결과를 얻는다.
버튼을 클릭하면
DialogInterface안에 원하는 작업을 추가해 주면 된다.
커스텀
커스텀할 dialog를 구현하기 위해 dialog.kt 와 activity_dialog.xml을 만들었다.
activity_dialog.xml에는 원하는 뷰를 구성하면 된다.
dialog.kt에 작성해야 할 것은
1. activity_dialog.xml 뷰바인딩
2. 다이얼로그 구성
3. listener 선언 및 setOnOKClickedListener 메서드 작성
이다.
class dialog(private val context: AppCompatActivity) {
//1번 뷰바인딩
val binding by lazy { ActivitySalrayEditDialogBinding.inflate(context.layoutInflater) }
//다이얼로그 선언 및 listener선언
private val dlg = Dialog(context)
private lateinit var listener : MyDialogOKClickedListener
//다이얼로그 생성
fun show(salary : String) {
dlg.requestWindowFeature(Window.FEATURE_NO_TITLE) //타이틀바 제거
dlg.setContentView(binding.root) //다이얼로그에 사용할 xml 파일을 불러옴
dlg.setCancelable(false) //다이얼로그의 바깥 화면을 클릭시 종료x
binding.salaryText.setText(salary) //전달 받은 텍스트를 표시
//save 버튼 동작
binding.saveButton.setOnClickListener {
//액티비티에 결과 전달
listener.onOKClicked(binding.salaryText.text.toString())
dlg.dismiss()
}
//cancel 버튼 동작
binding.cancelButton.setOnClickListener {
dlg.dismiss()
}
dlg.show()
}
fun setOnOKClickedListener(listener: (String) -> Unit) {
this.listener = object: MyDialogOKClickedListener {
override fun onOKClicked(content: String) {
listener(content)
}
}
}
interface MyDialogOKClickedListener {
fun onOKClicked(content : String)
}
}
그리고 MainActivity에서는
fun editSalary(view: View) {
val dlg = dialog(this)
dlg.setOnOKClickedListener{ content ->
binding.mySalary.text = content
}
dlg.show(binding.mySalary.text.toString())
}
이렇게 다이얼로그 요청을 보낼 수 있다.
결과>>
1100은 메인액티비티에서 전달받은 값이고, 값을 수정해서 저장하면 메인액티비티의 textview 바뀌는 다이얼로그를 구현해 보았다.
728x90
반응형