1

Я использую привязку данных, и я столкнулся с проблемой, когда свойство вида, с которым я привязываю, не заполняется сразу после раздувания макета, и модель представления установлена ​​для класса привязки.Когда методы привязки данных Fire Fire After Layout Inflation?

В содержащем фрагменте я использую BindingUtil для раздувания связанного макета в onCreateView() Фрагмента. Затем я сразу установил переменную привязки, которая является моей моделью представления.

Однако, когда я отлаживаю сразу после установки модели представления привязки, макет имеет нули для некоторых свойств вида, которые я привязал к модели представления. Если я буду ждать долю секунды, свойства будут установлены через привязку, как ожидалось.

Таким образом, когда происходит фактическое связывание свойств вида? Я предположил, что это произошло, как только модель представления была установлена ​​в класс привязки. Это должно быть ошибочно ...

Может кто-нибудь помочь мне с хорошим способом отладить эту проблему?

ответ

3

согласно Data Binding documentation:

Когда переменные или наблюдаемые изменения, связывание будет назначено изменить до следующего кадра. Однако есть моменты, когда привязка должна выполняться немедленно. Для принудительного выполнения используйте метод executePendingBindings().

+0

Это относится к инфляции? Полагаю, что я должен попытаться выполнить этот метод в onCreateView(). Спасибо – AutoM8R

+0

Справа: привязка данных доставляет все вызовы к следующему кадру по умолчанию (это предотвращает выполнение дополнительной работы, если вы вызываете его несколько раз в одном кадре). – ianhanniballake

+0

Удивительно, это исправило мою проблему! – AutoM8R