Ответ
Да, есть несколько механизмов:
- ViewBinding – генерирует binding-класс для каждого XML-макета, предоставляя безопасный доступ к View. Пример:
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.textView.text = "Hello" // безопасный доступ
}
- DataBinding – расширенная версия ViewBinding с поддержкой привязки данных. Включается в build.gradle:
android {
buildFeatures {
dataBinding true
}
}
- Проверка привязки в runtime – можно проверять, привязана ли View к Activity/Fragment:
if (view.isAttachedToWindow) {
// View привязана к window
}
ViewBinding предпочтительнее findViewById(), так как обеспечивает:
- Null-safety (невозможно обратиться к несуществующему View)
- Type-safety (исключены ошибки приведения типов)