24

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

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

4

1 回答 1

32

改为使用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
    } 
}
于 2020-04-30T03:24:00.140 回答