可以在Activity的onDestroy()方法中手动关闭BottomSheetDialogFragment。在此之前,需要为该方法创建一个全局变量,以便在Activity中的任何位置都可以访问到该BottomSheetDialogFragment。
下面是示例代码:
首先,在BottomSheetDialogFragment中定义一个全局变量:
private lateinit var dialog: Dialog
然后,在自定义的Dialog引用赋值后将其分配给变量:
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val view = activity?.layoutInflater?.inflate(R.layout.dialog_bottom_sheet, null) dialog = BottomSheetDialog(requireContext(), R.style.BottomSheetDialogTheme) dialog.setContentView(view!!) return dialog }
最后,在Activity的onDestroy()方法中关闭该变量:
override fun onDestroy() { super.onDestroy() if(::dialog.isInitialized){ if(dialog.isShowing){ dialog.dismiss() } } }
这样,可以在Activity关闭时关闭BottomSheetDialogFragment。