๐ก์ฐ์ํํ ํฌ์ฝ์ค ์ธํฐ๋ทฐ์์ Dialog์ DialogFragment์ ์ฐจ์ด์ ๋ํ ์ง๋ฌธ์ ๋ฐ์์ต๋๋ค. ์ด์ ๋ํด ํ์ตํ ๋ด์ฉ์ ์ ๋ฆฌํ์์ต๋๋ค.
๊ฐ์
- ์๋๋ก์ด๋์์ ์ฌ์ฉ์์ ์ํธ์์ฉํ๊ธฐ ์ํด ํ์ UI๋ก Dialog์ DialogFragment๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
- ๋ ๊ฐ์ง ๋ชจ๋ ๋ํ์์๋ฅผ ๋์ฐ๋๋ฐ ์ฌ์ฉ๋์ง๋ง, ์ฌ์ฉ ๋ฐฉ๋ฒ๊ณผ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ ์ธก๋ฉด์์ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
Dialog
- Dialog๋ ์๋๋ก์ด๋์์ ์ฌ์ฉ์์ ์ํธ์์ฉํ๋ ํ์ UI๋ฅผ ๋ง๋ค๊ธฐ ์ํ ๊ธฐ๋ณธ ํด๋์ค์ ๋๋ค.
- ์์ ์์ ์ ์ฌ์ฉ์์๊ฒ ์์ฒญํ๊ฑฐ๋ ์ ๋ณด๋ฅผ ํ์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- AlertDialog, DatePickerDialog, ProgressDialog์ ๊ฐ์ ๋ค์ํ ์๋ธํด๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
ํน์ง
- Activity์ ์ํ ํ์ ์ฐฝ์ผ๋ก, ๋ณต์กํ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค๊ธฐ๋ ์ ํฉํ์ง ์์ต๋๋ค.
- ํ๋ฉด ํ์ ์ด๋ ๋ฐฑ๊ทธ๋ผ์ด๋,ํฌ๊ทธ๋ผ์ด๋ ์ ํ ์์ ์ํ ์ ์ง๊ฐ ์ด๋ ต์ต๋๋ค.
- ๋ ๋ฆฝ์ ์ธ ์๋ช ์ฃผ๊ธฐ๊ฐ ์์ผ๋ฉฐ, ์กํฐ๋นํฐ์ ์์กดํ๊ธฐ ๋๋ฌธ์ ์กํฐ๋นํฐ๊ฐ ์ข ๋ฃ๋๋ฉด ์ฌ๋ผ์ง๋๋ค.
val dialog = AlertDialog.Builder(this)
.setTitle("Dialog Example")
.setMessage("This is a simple dialog.")
.setPositiveButton("OK") { _, _ ->
// Positive button clicked
}
.setNegativeButton("Cancel", null)
.create()
dialog.show()
DialogFragment
- DialogFragment๋ ๋ํ ์์๋ฅผ Fragment๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ํด๋์ค์ ๋๋ค.
- ์๋๋ก์ด๋ API 11(Android 3.0)๋ถํฐ ๋์ ๋์์ผ๋ฉฐ, ์๋ช ์ฃผ๊ธฐ์ ํจ๊ป ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ์ด๋ฅผ ํ์ฉํด์ ๋ ๋ฆฝ์ ์ธ ๋ํ์์๋ฅผ ๋ง๋ค๊ณ , ๋ค๋ฅธ ํ๋๊ทธ๋จผํธ์ ํตํฉํ๊ฑฐ๋ ์ํ ๊ด๋ฆฌ๋ฅผ ์ฝ๊ฒ ํ ์ ์์ต๋๋ค.
DialogFragment | Android Developers
ํน์ง
- FragmentManager๋ฅผ ํตํด Fragment์ ํตํฉ์ด ๊ฐ๋ฅํ๋ฉฐ ๋ค๋น๊ฒ์ด์ ๊ด๋ฆฌ๋ ์ฉ์ดํฉ๋๋ค.
- FragmentTransaction์ ํตํด BackStack์ ์ถ๊ฐํ ์ ์์ด, ์ฌ์ฉ์ ๊ฒฝํ ์ธก๋ฉด์์ ๋ ์ ์ฐํ ํ๋ฆ์ ๋ง๋ค ์ ์์ต๋๋ค.
- ๋ด๋ถ์ ์ผ๋ก Dialog๋ฅผ ์์ฑํ ์ ์์ด์ Dialog์ ์ฅ์ ์ ๋ชจ๋ ํ์ฉํ ์ ์์ต๋๋ค.
class MyDialogFragment : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return AlertDialog.Builder(requireContext())
.setTitle("DialogFragment Example")
.setMessage("This is a dialog from DialogFragment.")
.setPositiveButton("OK") { _, _ ->
// Positive button clicked
}
.setNegativeButton("Cancel", null)
.create()
}
}
// Fragment or Activity์์ ํธ์ถ
val dialogFragment = MyDialogFragment()
dialogFragment.show(supportFragmentManager, "dialog")
์ ๋ฆฌ
- ๊ณต์๋ฌธ์์์๋ ์๋ช ์ฃผ๊ธฐ ํ์ฉ์ด ๊ฐ๋ฅํ DialogFragment ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค.
- ๊ธฐ์กด Dialog๋ฅผ ํ์ฉํ ๋ Activity๊ฐ ํ๊ดด๋๋๋ผ๋ Dialog๊ฐ ์กด์ฌํ์ฌ, Leaked Window ๋ฌธ์ ๋ IllegalStateException ์๋ฌ๋ฅผ ๋ฐ์ํ ์๋ ์์ต๋๋ค.