Fragment
private var myContext: FragmentActivity? = null
override fun onAttach(activity: Activity) {
myContext = activity as FragmentActivity
super.onAttach(activity)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
....
view.reservation_cancel_tv_reservation.setOnClickListener { content ->
//fragment manager - supportFragmentManager 구현
var fragManager: FragmentManager = myContext!!.supportFragmentManager
val dialog = DeleteDialog()
// 버튼 클릭 이벤트 설정
dialog.setButtonClickListener(object : DeleteDialog.OnButtonClickListener {
override fun onButtonYesClicked() {
Log.d("Test", "DeleteDialog - 삭제 btn 클릭 Listen / Bottom에서 확인")
//삭제 레트로핏 구현
dismiss()
}
override fun onButtonCloseClicked() {
dismiss()
}
override fun onButtonCancelClicked() {
dismiss()
}
})
dialog.show(fragManager, "CustomDialog")
}
var fragManager: FragmentManager = myContext!!.supportFragmentManager
fragManager 변수를 지정해서 사용.
dialog
class DeleteDialog : DialogFragment() {
private var _binding: DialogOngoingRvCancelBinding? = null
private val binding get() = _binding!!
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = DialogOngoingRvCancelBinding.inflate(inflater, container, false)
val view = binding.root
// 레이아웃 배경을 투명하게 해줌, 필수 아님
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
binding.ongoingRvCancelDialogYes.setOnClickListener {
buttonClickListener.onButtonYesClicked()
dismiss() // 대화상자를 닫는 함수
}
binding.ongoingRvCancelDialogIvClose.setOnClickListener {
buttonClickListener.onButtonCloseClicked()
dismiss()
}
binding.ongoingRvCancelDialogNo.setOnClickListener {
buttonClickListener.onButtonCancelClicked()
dismiss()
}
return view
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
// 인터페이스
interface OnButtonClickListener {
fun onButtonYesClicked()
fun onButtonCloseClicked()
fun onButtonCancelClicked()
}
// 클릭 이벤트 설정
fun setButtonClickListener(buttonClickListener: OnButtonClickListener) {
this.buttonClickListener = buttonClickListener
}
// 클릭 이벤트 실행
private lateinit var buttonClickListener: OnButtonClickListener
}
다이얼로그 클릭 리스너 구현 참조
https://mechacat.tistory.com/9
[Android/Kotlin] DialogFragment 커스텀 대화상자 만들기
이전 글에서는 AlertDialog를 이용해서 기본적인 대화상자를 만들었다. 이번에는 DialogFragment를 이용해서 자신이 원하는 모양의 대화상자를 만들어본다. [Android/Kotlin] Dialog 대화상자 표시 (tistory.com).
mechacat.tistory.com
fragment에서 supportFragmentManager 기능 구현 참조
'Android > Kotlin' 카테고리의 다른 글
fragment, Activity reload, 데이터 변경 시 화면 갱신 (0) | 2021.07.24 |
---|---|
. (0) | 2021.07.21 |
RecyclerView adapter에서 전화걸기 (0) | 2021.07.19 |
Decimal Format / 천단위 콤마 넣기 (0) | 2021.07.18 |
Toggle switch drawable (0) | 2021.05.25 |