kobakei's blog

プログラミングの話や技術系イベントの話をゆるく書くブログです

BottomSheetDialogFragmentの使い方

あまりまとまってないようなのでメモ。

昔は setupDialog をオーバーライドしていたが、サポートライブラリが @RestrictTo(LIBRARY_GROUP) を付けるようになったので警告が出る。代わりに、 onCreateDialog をオーバーライドして中でビューを作成するのがよさそう。

class MyBottomSheet : BottomSheetDialogFragment() {

    companion object {
        // Fragmentと同様、インスタンス生成はstaticメソッドで行う
        fun newInstance(): MyBottomSheet = MyBottomSheet()
    }

    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        val dialog = super.onCreateDialog(savedInstanceState)

        // dialogに、自分で作ったビューをセットする
        val inflater = LayoutInflater.from(context)
        val binding: MyBottomSheetBinding = MyBottomSheetBinding.inflate(inflater)
        dialog.setContentView(binding.root)

        return dialog
    }
}