如何在 DialogFragment 中正确使用 Android 视图绑定?

Ler*_*era 20 android dialogfragment android-viewbinding

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

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

ham*_*vet 21

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

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

例子:

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
    } 
}
Run Code Online (Sandbox Code Playgroud)

  • 建议这样做是为了防止崩溃,但是如果在将其设置为 null 后使用绑定会发生什么情况?我认为它会崩溃,这意味着“private val binding get() = _binding!!”根本没有意义。我错过了什么吗? (3认同)
  • 此外,将绑定用作局部变量是更好的做法。在这种情况下不需要重写 onDestroyView !:) (3认同)