【问题标题】:Catch dismissal of BottomSheetDialogFragment赶上BottomSheetDialogFragment的解雇
【发布时间】:2016-07-15 09:11:39
【问题描述】:

有什么方法可以捕获 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(); 永远不会被触发
  • bottomsheet 行为的onStateChanged 仅在用户向下拖动bottomsheet 并通过折叠状态且没有dismissed/cancelled 状态时才会触发
  • 使用 ContactDetailFragment.getDialog().setOnCancelListener() 将相同的 oncancel/ondismiss 侦听器添加到 BottomSheetDialogFragment 的实例化不会被触发

鉴于它本质上是一个对话片段,一定有什么方法可以捕捉到解雇?

【问题讨论】:

  • Override onDismiss 方法对我有用。

标签: android android-dialogfragment bottom-sheet


【解决方案1】:

找到了一个简单的解决方案。 在 BottomSheetDialogFragment 中使用 onDestroyonDetach 可以让我正确地解雇

【讨论】:

  • 覆盖 onCancel()onDismiss()
  • 使用 onCancel(),它可以帮助您通过向下滑动来捕获用户取消操作
  • onCancel 仅在用户向下滑动时有效,如果您想在对话框关闭时收听所有情况,您可以使用 onDismiss()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-24
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
相关资源
最近更新 更多