Я учусь использовать библиотеку привязки данных. Я узнал, что это устраняет необходимость вызывать findViewById() вручную и делает код более надежным и читабельным.
Чтобы понять использование, я сделал следующее:
сделал temp_layout.xml, который содержит 2 текстовых представления с идентификаторами «tv1» и «tv2»
добавил тег
<layout>
в качестве корнянажал "создать проект"
Теперь я обнаружил, что доступен новый класс TempLayoutBinding, содержащий переменные tv1 и tv2.
Мой вопрос заключается в следующем, даже если я уже указал тег <layout>
в temp_layout.xml, почему мне все еще нужно вызывать mBinding = DataBindingUtil.setContentView(...)
? Что конкретно он делает?
Activity#setContentView
? то это та же самая причина, по которой вы звонитеDataBindingUtil#setContentView
- person pskink   schedule 16.08.2017<layout>
. (Он даже получил переменные, пройдя через идентификаторы представлений). Так не должен ли сгенерированный класс привязки уже знать, о каком макете я говорю? Я прав? - person fsljfke   schedule 16.08.2017Activity#setContentView
помогает отображать представление. При привязке данныхDataBindingUtil#setContentView
не должен играть роли в рендеринге пользовательского интерфейса, поскольку действие уже вызывает этот метод внутри себя. Поэтому я не думаю, что причина точно такая же и в этом случае. - person fsljfke   schedule 16.08.2017<layout>
? - person fsljfke   schedule 16.08.2017DataBindingUtil#setContentView
, вы все равно можете использоватьActivity#setContentView
, но вам также нужно будет вызвать методDataBindingUtil#bind
- person pskink   schedule 16.08.2017findViewById()
. И вы можете напрямую получить доступ к идентификатору в макете. - person c-an   schedule 14.05.2019