2010-09-15 15 views
17

Estoy buscando formas de reducir lo que yo llamaría "contaminación de idoneidad" en mis aplicaciones. Por lo que puedo decir, R.id es global para la aplicación, por lo que en cada actividad normalmente creo valores de identificación de recursos únicos para los elementos, incluso si tengo muchos de los mismos. Por ejemplo, si tengo tres clases de actividad, cada uno con un botón de guardar y cancelar, yo definiría seis de ID única para el R.id como:Alcance de los valores de 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 

Esto parece innecesaria a mí, ya que en realidad sólo debería necesitar dos que se ejecuta en cualquier actividad. ¿Cuáles son algunas de las prácticas que todos usan al generar identificadores de recursos? ¿Los vuelves a usar entre actividades? ¿Está bien si existe una identificación en dos Activites (tal vez una pausa y un primer plano) al mismo tiempo? ¡Tengo miedo de comportamientos raros como un clic de botón golpeando a demasiados oyentes!

Respuesta

20

Puede utilizar la misma ID en varios elementos, siempre que no estén en la misma vista. Por lo tanto, todos los botones de guardar podrían tener el ID de btn_save y siempre que no haya dos en el mismo archivo de diseño o en los diseños adjuntos, está bien.

+2

Gracias, eso tiene sentido dado que findViewById() se llama desde una Actividad o Vista, en lugar de la Aplicación. ¡Aclamaciones! – Devunwired

+1

Esto es solo un 50% cierto en este momento porque puede ver en el editor R.ids de actividades en el extranjero, por lo que puede pensar que uno de ellos es suyo incluso si no existe en su actividad. – user250343

+0

@Martyn, ¿qué quiere decir exactamente con "en la misma vista"? Si tengo un diseño de actividad que incluye 2 diseños de fragmentos, cada fragmento incluye un 'id =" @ + id/button_ok ", ¿esto sería un problema porque comparten la misma vista padre? – bcorso

4

que utilizo:

R.id.activityName_type_action

donde tipo puede ser [Bot | txtview | EditarTexto | listview ...]

y la acción es algo así como [Guardar | del | accept | name | pin ...]

Es bastante prolijo, pero de esta forma puedo adivinar el nombre del identificador de la actividad sin tener que verificar continuamente diseño xml

Por ejemplo:

R.id.loginpin_btn_accept

R.id.loginpin_txtview_pin

1

Las otras respuestas van a trabajar, pero también se puede hacer una save_button.xml en la carpeta de diseño, con <Button> como la etiqueta raíz. Luego haz referencia a la identificación de ese tipo en los lugares que lo necesites. Esto significa que solo necesita definir un botón "guardar" y usarlo en todas partes.