捕获 BottomSheetDialogFragment 的解雇
Catch dismissal of BottomSheetDialogFragment
有什么方法可以捕获 BottomSheetDialogFragment 的 dismissal/cancel 吗?
底部sheetclass
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();
永远不会被触发
- 底部sheet行为的
onStateChanged
仅在用户向下拖动底部sheet通过折叠状态时才会触发,dismissed/cancelled[没有状态] =32=]
- 通过使用
ContactDetailFragment.getDialog().setOnCancelListener()
将相同的 oncancel/ondismiss 侦听器添加到 BottomSheetDialogFragment 的实例化不会被触发
鉴于它本质上是一个对话片段,必须有某种方法来捕捉解雇?
找到一个简单的解决方案。
在 BottomSheetDialogFragment 中使用 onDestroy
或 onDetach
可以让我正确地解雇
有什么方法可以捕获 BottomSheetDialogFragment 的 dismissal/cancel 吗?
底部sheetclass
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();
永远不会被触发 - 底部sheet行为的
onStateChanged
仅在用户向下拖动底部sheet通过折叠状态时才会触发,dismissed/cancelled[没有状态] =32=] - 通过使用
ContactDetailFragment.getDialog().setOnCancelListener()
将相同的 oncancel/ondismiss 侦听器添加到 BottomSheetDialogFragment 的实例化不会被触发
鉴于它本质上是一个对话片段,必须有某种方法来捕捉解雇?
找到一个简单的解决方案。
在 BottomSheetDialogFragment 中使用 onDestroy
或 onDetach
可以让我正确地解雇