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()
ません。
本質的にダイアログの断片であることを考えると、解雇をキャッチする何らかの方法があるはずですか?