2010-11-11 9 views
6

Actualmente tengo cuidado de usar diferentes ID para cada widget, pero si utilizo la misma identificación para algunos widgets en diferentes archivos xml de diseño, ¿qué pasaría con mis llamadas a findViewById? ¿Se confundiría y devolvería un widget del archivo de diseño incorrecto?¿Qué sucede si uso la misma identificación para varios widgets en diferentes diseños?

Pregunto porque estaba pensando en incluir una vista (con una fila de botones) en algunas otras vistas, entonces cada una de esas clases de pantalla tendría que asignar un comportamiento ligeramente diferente a cada botón en la vista incluida. Pero para hacer eso estarían llamando a findViewById en la misma identificación. Por ejemplo Actualmente me gusta esto en cada archivo:

final ImageButton homeButton = (ImageButton)this.findViewById(R.id.rshome_button); 
homeButton.setOnClickListener(new BottomButtonClickListener()); 

final ImageButton hotButton = (ImageButton)this.findViewById(R.id.rshotlist_button); 
hotButton.setOnClickListener(new BottomButtonClickListener()); 

final ImageButton locButton = (ImageButton)this.findViewById(R.id.rsbot_map); 
locButton.setOnClickListener(new BottomButtonClickListener()); 

final ImageButton sendButton = (ImageButton)this.findViewById(R.id.rssend_button); 
sendButton.setOnClickListener(new BottomButtonClickListener()); 

Pero puedo cambiar el R.id en cada archivo para que apunte al widget en cada diseño assiciated. Sería bueno si pudiera usar el único R.id para todos, así no tengo que modificar todos los archivos de diseño y todas las clases de pantalla.

Gracias

Respuesta

3

que debería estar bien, siempre y cuando no se crean instancias ambos diseños en la misma actividad. Pero al no haberlo probado, no me gustaría garantizarlo.

Sin embargo, no me sorprendería que los errores Android generador de código hacia fuera sin embargo, ya que probablemente va a tratar de crear dos entradas en su R.id.rshome_buttonarchivo R.java.

+1

Entonces, ¿cómo saber cuál es el que estamos buscando? – GMsoF

-1

La mejor manera de probarlo usted mismo.

Pero usted establece setContentView (R.layout.your_layout);

Así que si usted llama findViewById que se buscará un widget con el ID dado en your_layout

Es por eso que se puede utilizar mismos identificadores en diferentes diseños.

+0

R.id.view_id es un entero estático generado en tiempo de compilación, antes de que se ejecute setContentView(). – Chloe

8

Sí, puede utilizar el mismo id s en diferentes diseños. De hecho, puede ser una buena práctica hacerlo.

Cuestiones relacionadas