有没有办法捕捉 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
只有在用户将底部滑动到折叠状态以下时才会触发,并且没有取消/关闭的状态 - 通过使用
ContactDetailFragment.getDialog().setOnCancelListener()
将相同的oncancel/ondismiss监听器添加到BottomSheetDialogFragment的实例化中也不会触发
考虑到它本质上是一个对话框片段,肯定有一些方法可以捕获关闭事件吧?
onDismiss
方法对我很有用。 - hoshi