반응형
DialogFragment
- AlertDialog를 Fragment로 만들어 사용할 수 있도록 제공되는 프래그먼트 (AlertDialog와 큰 차이 X)
- Fragment의 생명주기나 기능들을 그대로 사용 가능 -> 그냥 AlertDialog를 쓰는 것보다 다양한 기능 구현 가능하다는 장점
// 레이아웃 없이 다이얼로그 띄워서 사용 (액티비티의 버튼 누르면 프래그먼트 띄우고, 그 프래그먼트에 다이얼로그 띄움)
// 다이얼로그를 커스텀하고자 하면 레이아웃 만들수도
// DialogFragment -> 다이얼로그를 관리하는 프래그먼트
class SubFragment : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// AlertDialog를 만들어 반환하면 다이얼로그가 됨
val mainActivity = activity as MainActivity
val builder = AlertDialog.Builder(mainActivity)
builder.setTitle("타이틀 입니다")
builder.setTitle("메시지 입니다")
builder.setPositiveButton("Positive") { dialoginterface, i ->
mainActivity.findViewById<TextView>(R.id.textView).text = "Positive"
}
builder.setNeutralButton("Neutral"){ dialoginterface, i ->
mainActivity.findViewById<TextView>(R.id.textView).text = "Neutral"
}
builder.setNegativeButton("Negative"){ dialoginterface, i ->
mainActivity.findViewById<TextView>(R.id.textView).text = "Negative"
}
val alert = builder.create()
return alert
}
}
[MainActivity.kt]
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater) // 뷰바인딩 객체
val view = binding.root //뷰바인딩을 통해 레이아웃과 뷰가 결합 -> .root 를 통해 View 객체만를 뽑아내는(?)
setContentView(view)
binding.button.setOnClickListener {
val subFragment = SubFragment()
subFragment.show(supportFragmentManager, null) // DialogFragment 를 실행시키는 방법
}
}
반응형
'Android' 카테고리의 다른 글
[안드로이드/Activity] Activity Animation (0) | 2023.04.22 |
---|---|
[안드로이드/Fragment] Fragment Animation (0) | 2023.04.22 |
[안드로이드/Fragment] ListFragment (0) | 2023.04.22 |
[안드로이드/Fragment] Activity Controller (0) | 2023.04.22 |
[안드로이드/Fragment] Fragment 내 View 제어 (0) | 2023.04.21 |