首页 > 解决方案 > 如何在 DialogFragment 中正确使用 Android 视图绑定?

问题描述

在 DialogFragment() 中使用 Android 视图绑定的正确方法是什么?

官方文档只提到了Activity和Fragment: https ://developer.android.com/topic/libraries/view-binding

标签: androiddialogfragmentandroid-viewbinding

解决方案


改为使用inflate(LayoutInflater.from(context))。并用于binding.root设置构建器视图。

此外,正如 Google 所建议的,在使用片段时 将binding实例设置为 null是最佳做法: https ://developer.android.com/topic/libraries/view-binding#fragmentsonDestroyView()

例子:

class ExampleDialog : DialogFragment() {

    private var _binding: DialogExampleBinding? = null
    // This property is only valid between onCreateDialog and
    // onDestroyView.
    private val binding get() = _binding!!

    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        _binding = DialogExampleBinding.inflate(LayoutInflater.from(context))
        return AlertDialog.Builder(requireActivity())
            .setView(binding.root)
            .create()
    }
    
    override fun onDestroyView() {
        super.onDestroyView()
        _binding = null
    } 
}

推荐阅读