Могу ли я использовать один и тот же идентификатор в разных макетах в Android?


Я новичок в разработке Android. Можно ли использовать один и тот же идентификатор для изображений и TextViews в другой Layout XML-файлов?

когда eclipse автоматически перечисляет их для меня, он перечисляет все переменные макета из проекта, так что он столкнется? До сих пор я не заметил никаких проблем с использованием одного и того же идентификатора в разных макетах, но я обеспокоен в долгосрочной перспективе.

4 67

4 ответа:

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

обычно я называю свои идентификаторы так:layoutName_elementId.

он работает для меня, чтобы легко найти идентификатор, который я ищу, особенно при использовании автозаполнения (я знаю, на каком макете я работаю, но я действительно не знаю id; в этом случае с моей стратегией именования я только набираю имя макета, и он приносит все идентификаторы этого макета).

дополнительную информацию о макетах и идентификаторах можно найти здесь.

удачи в кодировании,

короткий ответ: Да, вы можете.

длинный ответ: Вы можете сделать это, потому что всякий раз, когда вы используете findViewById (), чтобы получить ссылку на часть вашего макета, метод ищет только это представление в текущем раздутом макете. Поэтому, даже если у вас есть другой вид с тем же идентификатором в другом макете, Android не будет искать его там.

согласно руководствам API разработчика:

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

таким образом, короткий ответ заключается в том, что это не обязательно, но это хорошая практика, чтобы избежать возможных конфликтов.

Не рекомендуется, потому что если в будущем вы измените вид и идентификатор рефакторинга, Android studio будет рефакторировать его во всех xml-файлах и классах, и вы попадете в беду.