Объем значений R.id

Я ищу способы уменьшить то, что я назвал бы «id-загрязнением» в своих приложениях. Из того, что я могу сказать, R.id является глобальным для приложения, поэтому в каждом Activity я обычно создаю уникальные значения идентификатора ресурса для элементов, даже если у меня есть много одного и того же. Например, если у меня есть три класса Activity, каждая из которых имеет кнопку сохранения и отмены, я бы определил шесть уникальных идентификаторов для R.id :

 R.id.actOne_save R.id.actOne_cancel R.id.actTwo_save R.id.actTwo_cancel R.id.actThree_save R.id.actThree_cancel 

Мне это кажется ненужным, так как мне действительно нужно только два действия на любую активность. Каковы некоторые из методов, которые вы используете при создании идентификаторов ресурсов? Вы повторно используете их между действиями? Это нормально, если идентификатор существует на двух активах (возможно, один приостановлен и один передний план) одновременно? Я боюсь странного поведения, как кнопка, нажимающая слишком много слушателей!

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

Я использую:

R.id.activityName_type_action

Где тип может быть [btn | txtview | edittext | listview …]

И действие – это что-то вроде [save | del | accept | name | pin …]

Это довольно многословно, но таким образом я могу угадать имя идентификатора из действия, не требуя постоянной проверки макета xml.

Например:

R.id.loginpin_btn_accept

R.id.loginpin_txtview_pin

Другие ответы будут работать, но вы также можете создать файл save_button.xml в папке макета с помощью <Button> в качестве корневого тега. Затем укажите идентификатор этого парня в тех местах, в которых он вам нужен. Это означает, что вам нужно только определить одну кнопку «сохранить» и использовать ее повсюду.

Intereting Posts
Настройка настраиваемого тонального сигнала будильника в Android воспроизводит тональный сигнал по умолчанию вместо Сервисы Google Play для Froyo Spinner с пользовательским ArrayAdapter для объектов, не отображающих выбранный элемент Android, фрагмент Google Maps и просмотрщик – Ошибка раздувания фрагмента класса MockWebServer и дооснащение с обратным вызовом Ограничение использования для Android-ключа для API Google Android API21: VoiceInteractionService onReady () не вызывается Неплохо ли использовать значки шрифтов в собственных приложениях для Android? Android progressBar не отображается Карта MapFragment загружается с задержкой при возврате из другой активности Почему setCharactersticNotification () фактически не включает уведомления? Что происходит с приложением Android, когда телефонный звонок прерывает приложение? Игра Admob в Libgdx Аутентифицировать приложение HTML5, завернутое в Phonegap (или эквивалентное) Есть ли клиент / сервер Miracast для Mac или Windows?