Подтвердить что ты не робот

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

Я ищу способы уменьшить то, что я назвал бы "id-загрязнением" в своих приложениях. Из того, что я могу сказать, R.id является глобальным для приложения, поэтому в каждом мероприятии я обычно создаю уникальные значения идентификатора ресурса для элементов, даже если у меня есть много одного и того же. Например, если у меня есть три класса 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

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

4b9b3361

Ответ 1

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

Ответ 2

Я использую:

R.id.activityName_type_action

где type может быть [btn | txtview | edittext | listview...]

и действие похоже на [save | del | accept | name | pin...]

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

Например:

R.id.loginpin_btn_accept

R.id.loginpin_txtview_pin

Ответ 3

Другие ответы будут работать, но вы также можете сделать save_button.xml в своей папке макета, с <Button> в качестве корневого тега. Затем укажите, что парень id в тех местах, которые вам нужны. Это означает, что вам нужно только определить одну кнопку "сохранить" и использовать ее везде.