LayoutInflater и onFinishInflate () - PullRequest
5 голосов
/ 10 июня 2011

Я сталкиваюсь с проблемой возврата 100% * NULL, с которой многие из них, похоже, сталкиваются. Я понимаю, что findViewById () должен вызываться только после того, как представление надувается в onFinishInflate(). Мой вопрос - что такое инфляция?

В Activity я вызываю setContentView(R.layout.testview), который должен вызывать конструктор View, а также вызывает onDraw (). Так что раздувает мнение, не так ли? Если так, то почему существует LayoutInflater и функция, которая фактически раздувает вид? На самом деле в моем коде onInflateView() никогда не вызывается, хотя весь вид отображается, и я смог взаимодействовать с программой. Это говорит мне о том, что инфляция View несколько отличается от вызова конструктора View и функций onDraw(). Может кто-нибудь объяснить, пожалуйста?

РЕДАКТИРОВАТЬ: Также у меня есть пользовательский вид, который я рисую, используя функцию onDraw (). Каким-то образом функция onFinishInflate () никогда не вызывается для меня. Что может быть причиной этого?

-P

1 Ответ

6 голосов
/ 10 июня 2011

Мой вопрос - что такое инфляция представления?

Инфляция представления - это процесс преобразования XML-файла макета в соответствующее дерево объектов View.Вы делаете это вручную, используя LayoutInflater, или Android делает это для вас из setContentView(), встроенных Adapter классов и т. Д.

В действии я вызываю setContentView (R.layout.testview), который должен вызывать конструктор View, а также вызывать onDraw ().Так что это раздувает представление, не так ли?

setContentView() раздувает предоставленный файл макета.

Если так, то почему существует LayoutInflater и функция, которая фактически раздуваетview?

Потому что иногда вам нужно сделать это вручную, например, в комплексе ListView с различными типами строк (например, заголовок и детализация).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...