Android 抓住被解雇的人

Android 抓住被解雇的人,android,android-dialogfragment,bottom-sheet,Android,Android Dialogfragment,Bottom Sheet,有没有办法捕捉到某个片段的解雇/取消 底部板材类 public class ContactDetailFragment extends BottomSheetDialogFragment { private BottomSheetBehavior.BottomSheetCallback mBottomSheetBehaviorCallback = new BottomSheetBehavior.BottomSheetCallback() { @Override

有没有办法捕捉到某个片段的解雇/取消

底部板材类

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()中的任一项
    对话框.setOnDismissListener()从不被触发
  • 只有当用户向下拖动底部工作表并通过折叠状态,并且没有“已解除/取消”状态时,才会触发底部工作表行为的
    onStateChanged
  • 使用
    ContactDetailFragment.getDialog().setOnCancelListener()
    将相同的oncancel/ondismiss侦听器添加到BottomSheetDialogFragment的实例化中不会触发
考虑到它本质上是一个对话片段,必须有某种方法来捕捉解雇?

找到了一个简单的解决方案。
在BottomSheetDialogFragment中使用
onDestroy
onDetach
允许我正确地获得解雇

覆盖
onDismiss
方法对我有效。覆盖
onCancel()
onDismiss()
转到onCancel()这将帮助您通过向下滑动捕获用户取消仅当用户向下滑动时Cancel才起作用如果您想在对话框关闭时侦听所有情况,则可以使用onDismiss()