2014-09-17 2 views
-3

Я создаю свое первое приложение для Android и у меня есть несколько макетов до сих пор. В одном из них я создал TextView и назвал его «textViewCurrentUserName». Для моего удивления, когда я создал новый макет, вставил новый TextView и попытался назвать его «textViewCurrentUserName», у меня появилась ошибка, указывающая, что имя уже существует !!! Это должно быть ошибкой?!? я имею в виду, нормально «не повторять» на том же макете (xml), но это совершенно разные макеты !!!Android же имя выпуск

Я делаю что-то не так здесь?!? Есть ли это обходное решение? Я не хочу хранить абсолютно идиотское и трудно читаемое/понятное имя, такое как «activity_UserDetails_TextViewCurrentUserName» и «activity_UserExport_TextViewCurrentUserName»

+0

Это определенно вы. Префикс был с '@ + id'? Отправьте свой макет. – 323go

+0

Иногда может быть ' .xml.orig' (или' .xml ~ 'и т. Д.), Что также может вызвать такую ​​проблему. – mbmc

+0

@ 323go да я сделал! – Leonardo

ответ

2

Поле Android ID создает уникальный идентификатор для каждого элемента пользовательского интерфейса и сохраняет их в файле R. Поскольку фрагменты/действия и макеты и довольно развязанные, само приложение не будет знать, какие макеты и элементы пользовательского интерфейса доступны. Таким образом, вы должны явно указать, какой элемент вы ищете. Приложение будет генерировать исключение, если указанный элемент пользовательского интерфейса в настоящее время недоступен (или, возможно, элемент будет null).

Единственным обходным решением является разработка соглашения об именах. Можно использовать [имя-фрагмента] _textViewCurrentUser, чтобы каждый текстовый вид имел уникальный идентификатор. Или, возможно, вы можете поместить нижний регистр «t» перед каждым элементом пользовательского интерфейса, который представляет собой текстовое представление: [имя-фрагмента] _tCurrentUser.

+0

ohh хорошо ... я думаю, больно придерживаться соглашений об именах ... – Leonardo

Смежные вопросы