android {
...
viewBinding {
enabled = true
}
}
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
binding.apply {
btnSubmit.setOnClickListener {
val name = etName.text.toString()
tvMessage.text = "Hello! $name"
etName.setText("")
}
}
}
① View를 직접 참조하기 때문에 유효하지 않은 View ID로 인해 null 포인터 예외가 발생할 위험이 없음
② 각 바인딩 클래스에 있는 필드의 유형이 XML 파일에서 참조하는 뷰와 일치하므로 클래스 변환 예외가 발생할 위험이 없음
[공식 문서 참고]