findViewById возвращает значение Null из раздутого макета

Мы находимся в ситуации, когда мы пытаемся отобразить сообщение об ошибке, когда действие может быть уничтожено до того, как отобразится сообщение об ошибке (например, запуск AsyncTask для обновления некоторых данных, а затем завершение действия). Мы хотели бы отобразить сообщение об ошибке.

Прямо сейчас мы можем работать с Toast, используя приложение в качестве контекста. Это прекрасно работает.

Мы пытаемся добавить пользовательский макет в микс. Мы можем раздуть макет, а затем пытаемся установить некоторые текстовые представления. К сожалению, когда мы вызываем findByViewId для расширенного представления, он всегда равен нулю, и мы не можем установить текст в пользовательском макете.

Любые рекомендации о хорошем способе приблизиться к этому? Единственная ссылка, которая у нас есть на тот момент, — это Application.


person Gary Rudolph    schedule 23.10.2011    source источник
comment
Убедитесь, что представление существует, прежде чем пытаться использовать findViewById. Пользовательский макет делается программно или xml?   -  person Phobos    schedule 23.10.2011
comment
Проблема, похоже, в том, что контент еще не установлен, и мы не можем получить представление без установленного контента. Поскольку это базовый класс, и он происходит до этого, невозможно узнать, каким будет результирующий контент.   -  person Gary Rudolph    schedule 29.10.2011
comment
@Phobos Правильно, это делается с помощью XML. Я полагаю, что если мы просто перейдем к кодовому подходу, все будет хорошо.   -  person Gary Rudolph    schedule 29.10.2011


Ответы (1)


Иногда макеты XML (точнее, результирующие файлы «R. *») не синхронизируются с проектом, и это приводит к проблемам, подобным вашей. Лекарство состоит в том, чтобы «очистить» (Project -> Clean из главного меню eclipse) проект и снова запустить приложение.

person Ognyan    schedule 23.10.2011