Поймать увольнение BottomSheetDialogFragment

Есть ли способ поймать увольнение/отмену BottomSheetDialogFragment?

Класс нижнего листа

public class ContactDetailFragment extends BottomSheetDialogFragment
{
    private BottomSheetBehavior.BottomSheetCallback mBottomSheetBehaviorCallback = new BottomSheetBehavior.BottomSheetCallback()
    {
        @Override
        public void onStateChanged(@NonNull View bottomSheet, int newState)
        {
            if (newState == BottomSheetBehavior.STATE_HIDDEN)
            {
                dismiss();
            }
        }

        @Override
        public void onSlide(@NonNull View bottomSheet, float slideOffset)
        {
        }
    };

    @Override
    public void setupDialog(Dialog dialog, int style)
    {
        super.setupDialog(dialog, style);
        View contentView = View.inflate(getContext(), R.layout.fragment_contactdetail, null);

        dialog.setContentView(contentView);

        BottomSheetBehavior mBottomSheetBehavior = BottomSheetBehavior.from(((View) contentView.getParent()));
        if (mBottomSheetBehavior != null)
        {
            mBottomSheetBehavior.setBottomSheetCallback(mBottomSheetBehaviorCallback);
            mBottomSheetBehavior.setPeekHeight((int) DisplayUtils.dpToPixels(CONTACT_DETAIL_PEEK_HEIGHT, getResources().getDisplayMetrics()));
        }
    }
}

То, что я пробовал, не работает

  • в setupDialog добавление dialog.setOnCancelListener(); или dialog.setOnDismissListener(); никогда не срабатывает
  • поведение нижнего листа onStateChanged срабатывает только в том случае, если пользователь перетаскивает нижний лист вниз, минуя свернутое состояние, и нет состояния для отклонения/отмены
  • добавление тех же прослушивателей oncancel/ondismiss к экземпляру BottomSheetDialogFragment с использованием ContactDetailFragment.getDialog().setOnCancelListener() не запускается

Учитывая, что это по сути фрагмент диалога, должен же быть какой-то способ отловить увольнение?


person behelit    schedule 28.03.2016    source источник
comment
У меня сработал метод переопределения onDismiss.   -  person hoshi    schedule 14.04.2016


Ответы (1)


Нашел простое решение. Использование onDestroy или onDetach в BottomSheetDialogFragment позволяет мне правильно получить увольнение

person behelit    schedule 28.03.2016
comment
Переопределить onCancel() или onDismiss() - person M-WaJeEh; 23.11.2016
comment
Перейдите к onCancel(), который поможет вам зафиксировать отмену пользователем, сдвинув вниз - person Chinthaka Devinda; 22.10.2019
comment
onCancel работает только тогда, когда пользователь скользит вниз, если вы хотите прослушать все случаи, когда диалог закрыт, вы можете использовать onDismiss() - person Gökberk Yağcı; 21.08.2020