フラグメント分割レイアウトの初期設定で、onCreateView
メソッドをオーバーライドしようとしましたが、ボトムシートの状態の変更に通知されませんでした。 onCreateView
ではなく、BottomSheetDialogFragmentのsetupDialog
メソッドをオーバーライドした後でのみ、状態の変更をリッスンすることができました。ここでは、サンプルコード
public class AddMetricFragment extends BottomSheetDialogFragment {
BottomSheetBehavior.BottomSheetCallback bottomSheetCallback = new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
// React to state change
Log.d("logtag", "Bottom Sheet State " + newState);
}
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
// React to dragging events
}
};
@Override
public void setupDialog(Dialog dialog, int style) {
super.setupDialog(dialog, style);
contentView = View.inflate(getContext(), R.layout.bottom_sheet_layout, null);
dialog.setContentView(contentView);
CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) ((View) contentView.getParent()).getLayoutParams();
CoordinatorLayout.Behavior behavior = layoutParams.getBehavior();
if (behavior != null && behavior instanceof BottomSheetBehavior) {
((BottomSheetBehavior) behavior).setBottomSheetCallback(bottomSheetCallback);
}
}
}
私は同様の問題を抱えています。あなたは最終的にそれを理解しましたか? –