記録

主にAndroidアプリ開発に関する知見やその周辺に関わることについて記事をかいています

DialogFragmentでViewBindingを利用する

DialogやFragmentの layoutInflater を使ってViewBindingをinflateして、Dialogの setContentView にわたす。クリック時にDialogをdismissしたい場合などは先にDialogを作っておいて dialog.dismiss() をすれば良い。

class HogeDialogFragment : DialogFragment() {

    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        val binding = FragmentHogeBinding.inflate(layoutInflater)
        binding.textView.text = getString(R.string.hello_world)

        return super.onCreateDialog(savedInstanceState).apply {
            // val binding = FragmentHogeBinding.inflate(layoutInflater)
            // binding.textView.text = getString(R.string.hello_world)
            setContentView(binding.root)
        }
    }

普段はAlertDialogにsetViewするのであまり使わないけど、リファクタリングとかに役立つかも。