2010-11-11 9 views
6

Attualmente sto attento a utilizzare ID diversi per ciascun widget, ma se ho usato lo stesso id per alcuni widget in file xml di layout diversi, cosa accadrebbe alle mie chiamate per trovareViewById? Verrà confuso e restituirà un widget dal file di layout sbagliato?Cosa succede se utilizzo lo stesso ID per più widget in layout diversi?

Chiedo perché stavo pensando di includere una vista (con una fila di pulsanti) in alcune altre visualizzazioni, quindi ciascuna di queste classi di schermate dovrebbe assegnare un comportamento leggermente diverso a ciascun pulsante nella vista inclusa. Ma per farlo avrebbero chiamato findViewById sullo stesso id. Per esempio attualmente lo faccio come questo in ogni file:

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()); 

Ma cambiare la R.id in ogni file per puntare al widget in ogni layout assiciated. sarebbe bello se potessi usare quello R.id per tutti, quindi non devo modificare ogni file di layout e ogni classe di schermate.

Grazie

risposta

3

dovrebbe andare bene finché non si crea un'istanza di entrambi i layout nella stessa attività. Ma non avendolo mai provato, non vorrei garantirlo.

Tuttavia, io non sarei sorpreso se gli errori generatore di codice Android fuori anche se, come probabilmente cercare di creare due R.id.rshome_button voci nel file di R.java .

+1

Quindi come si sa quale è quello che stiamo cercando? – GMsoF

-1

Il modo migliore di provarlo tu stesso.

Ma si imposta setContentView (R.layout.your_layout);

Quindi, se si chiama findViewById sarà guardato per un widget con il dato id in your_layout

Ecco perché è possibile utilizzare lo stesso ID di in diversi layout.

+0

R.id.view_id è un numero intero statico generato in fase di compilazione, prima dell'esecuzione di setContentView(). – Chloe

8

Sì, è possibile utilizzare gli stessi id s in diversi layout. In effetti, potrebbe essere una buona pratica.

Problemi correlati