Mi è stata posta questa domanda:
Sul mio progetto, dopo aver eseguito un “clean” (uso eclipse), la classe R è stata cancellata.
Come faccio a rigenerarla?
Bene..vi comunico che non c’è nulla di cui preoccuparvi anche se vedete punti esclamativi rossi sul progetto oppure icone rosse con la “X” su ogni attività creata..
Giustamente questi errori vengono generati perché manca la classe R.
Vediamo prima di tutto cosa è la classe R in modo da capire il motivo per il quale eclipse (o il nostro ambiente di sviluppo) riconosce questi errori.
Un applicazione Android è costituita da diversi tipi di componenti che comprendono : codice sorgente Java, documenti XML, icone ed immagini, basi di dati e file binari di altro tipo. Tutti questi componenti vanno in un qualche modo assemblati fra di loro ed in base alla tipologia va inserito in un particolare punto del progetto.
Abbiamo delle risorse XML che definiscono alcune parti dell’applicazione come la GUI oppure dei parametri e valori, ma allo stesso tempo abbiamo il codice java all’interno di un Activity che deve utilizzare queste risorse per l’applicazione.
Come avviene tutto questo?
Il ponte fra questi due tipi i componenti viene gestito dalla “classe R” (da Resurces (All resource IDs are defined in your project’s R class, which the aapt tool automatically generates)) contenuta nella cartella gen/ e che viene generata dal plugin ADT in maniera automatica ogni qualvolta aggiungiamo un elemento alla struttura di un documento XML già esistente oppure ne creiamo uno nuovo.
Per utilizzare le risorse ‘mappate’ in questa classe si utilizzano alcuni metodi implementati nella classe Activity,come per esempio “setContentView(R.layout.main) attraverso cui implementare il layout grafico del main semplicemente richiamandolo attraverso la classe R
Il metodo riceve un intero che deve identificare la risorsa XML dove è definito il layout grafico. Quindi la costante R.layout.main identifica questa risorsa.
Un’altro metodo molto importante è findViewById(R.id.codicerisorsa) che in questo caso ricerca l’elemento in base all’ ID definito nella risorsa XML.
Detto ciò passiamo a come risolvere il problema della scomparsa di tale classe molto importante e senza la quale non sarebbe possibile identificare tutte le risorse della nostra applicazione
Il modo più veloce e immediato per rigenerare la classe R è quella di togliere la spunta da: Menù Project->Build Automatically e successivamente cercare di salvare, oppure andare su tasto dx Progetto(in Project Explorer)->Restore from Local Hystory e dopo tornare a Menù Project->Build Automatically e rimettere il check.
(subito dopo verrà rigenerata la classe automaticamente)
Spero d’esser stato d’aiuto 😉
Grazie
Alessio