Q. 어떻게 사용해?
A.
DialogFragment
class AlertDialogFragment : DialogFragment() {//상속 받을 때 주의
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//5초뒤
_binding?.btnAlertDialog1?.setOnClickListener {
selectedAlarm = 1
}
//하루 전
_binding?.btnAlertDialog2?.setOnClickListener {
selectedAlarm = 2
}
//당일
_binding?.btnAlertDialog3?.setOnClickListener {
selectedAlarm = 3
}
//완료
_binding?.alertBtnDialogComplete?.setOnClickListener {
exit()
}
//취소
_binding?.alertBtnDialogBack?.setOnClickListener {
selectedAlarm = 0
exit()
}
}
//디테일페이지로 돌아가는 함수
private fun exit() {
val dialogResult =
ContactDetailFragment.newInstance(friend!!, selectedAlarm)
requireActivity().supportFragmentManager.beginTransaction()
.replace(R.id.frame_layout, dialogResult).addToBackStack(null).commit()
dismiss()
}
MaterialAlertDialogBuider()
private fun requireAlarmPermission() {
MaterialAlertDialogBuilder(
requireContext(), R.style.detail_dialog_alert
)
.setTitle(getString(R.string.alarm_ask_permission))
.setNegativeButton(getString(R.string.move)) { dialog, which ->
val intent = Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS).apply {
putExtra(Settings.EXTRA_APP_PACKAGE, requireContext().packageName)
}
startActivity(intent)
}
.setPositiveButton(getString(R.string.cancel)) { dialog, which ->
Toast.makeText(
requireContext(),
getString(R.string.alarm_need_permission),
Toast.LENGTH_LONG
).show()
}
.show()
isNotCheck()
}
values-style.xml
<!-- 다이얼로그 -->
<style name="detail_dialog_alert" parent="ThemeOverlay.MaterialComponents.MaterialAlertDialog">
<item name="android:background">@color/white</item>
<item name="materialAlertDialogTitleTextStyle">@style/TitleTextStyle</item>
<item name="buttonBarNegativeButtonStyle">@style/NegativeButtonStyle</item>
<item name="buttonBarPositiveButtonStyle">@style/PositiveButtonStyle</item>
<item name="android:dialogCornerRadius">15dp</item>
</style>
<style name="TitleTextStyle" parent="MaterialAlertDialog.MaterialComponents.Title.Text">
<item name="android:textColor">@color/black</item>
<item name="android:textSize">18sp</item>
</style>
<style name="NegativeButtonStyle" parent="Widget.MaterialComponents.Button.TextButton.Dialog">
<item name="android:textColor">@color/primary</item>
<item name="android:textSize">16sp</item>
<item name="android:textStyle">bold</item>
<item name="rippleColor">@color/primary</item>
</style>
<style name="PositiveButtonStyle" parent="Widget.MaterialComponents.Button.TextButton.Dialog">
<item name="android:textColor">@color/black</item>
<item name="android:textSize">16sp</item>
<item name="rippleColor">@color/white</item>
</style>
AlertDialog, 뒤로가기 이벤트
private fun btnBackListener() {
val btnBackListener = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
//다이얼로그 빌더
val builder = AlertDialog.Builder(this@MainPageActivity)
builder.setTitle(getString(R.string.eco_market))//제목
builder.setMessage(getString(R.string.ask_finish))//내용
builder.setIcon(R.drawable.ic_logo_eco)//아이콘
//버튼별 이벤트
val btnListener = DialogInterface.OnClickListener { dialog, which ->
when (which) {
DialogInterface.BUTTON_POSITIVE -> finish()
}
}
builder.setPositiveButton(getString(R.string.yes), btnListener)
builder.setNegativeButton(getString(R.string.no), btnListener)
builder.show()
}
}
onBackPressedDispatcher.addCallback(this, btnBackListener)
}
'나만의 AI > 안드로이드 도와줘' 카테고리의 다른 글
Android Kotlin [Pickmedia 알려줘] (1) | 2024.08.31 |
---|---|
Android Kotlin [ViewPager2 알려줘] (0) | 2024.08.06 |
Android kotlin [ViewModel 알려줘] (0) | 2024.08.01 |
Android kotlin [Glide 알려줘] (0) | 2024.08.01 |
Android kotlin [parcelize 알려줘] (0) | 2024.07.16 |