Activity.onAttachFragment не вызывается с BottomSheetDialogFragment - PullRequest
0 голосов
/ 16 апреля 2020

Чего я пытаюсь достичь

У меня есть этот очень простой диалог подтверждения в виде подкласса 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 вызывается как обычно.

1 Ответ

0 голосов
/ 16 апреля 2020

Нашел проблему: этот код для DialogFragment был в моей супер-активности, а в подклассе, в котором я тестировал это, я забыл позвонить super.onAttachFragment.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...