Чего я пытаюсь достичь
У меня есть этот очень простой диалог подтверждения в виде подкласса BottomSheetDialogFragment
, ConfirmationBottomSheet
. Мне нужно перезвонить с ConfirmationBottomSheet
после подтверждения действия, и я предпочитаю назначать обратный вызов с onAttachFragment
компонента вызывающей стороны (Activity
или Fragment
) вместо того, чтобы DialogFragment
требовали, чтобы host
реализует интерфейс Listener.
override fun showConfirmation(confirmationAction: () -> Unit) {
this.pendingModalConfirmation = confirmationAction
val confirmationModal = ConfirmationBottomSheet.newInstance(title = "Test", body = "Test", positiveActionText = "Test")
confirmationModal.show(supportFragmentManager, confirmationModalTag)
}
override fun onAttachFragment(fragment: Fragment) {
super.onAttachFragment(fragment)
if (fragment.tag == confirmationModalTag) {
(fragment as ConfirmationBottomSheet).apply {
positiveAction = checkNotNull(pendingModalConfirmation).invoke()
}
}
}
Проблема
При попытке использовать мой подкласс BottomSheetDialogFragment
из Activity, onAttachFragment
просто не называется. Однако при использовании DialogFragment
из Fragment
его onAttachFragment
вызывается как обычно.