Qué es R:
No hay nada muy misterioso en R. Es solo una clase que tiene muchas subclases estáticas, ábrela en eclipse y echa un vistazo (está debajo de gen /).
Cada miembro de esta clase es una de dos cosas: 1) clases finales estáticas o 2) enteros finales estáticos que son únicos con respecto a los otros miembros de su clase.
¿Por qué es tan críptico?
Es fácil confundirse porque R es generado automáticamente por ant. Es críptico porque se supone que no debes "tocarlo" manualmente (por supuesto que puedes, pero tus cambios se borrarán automáticamente al regenerarse). Además, es críptico porque a veces eclipse importa automáticamente el archivo R estándar de androides (como se discutió en las respuestas anteriores)
¿Por qué siempre es el primero que no se puede resolver? R sigue exactamente las reglas de las clases y paquetes de Java, no hay nada especial en cómo actúa R con respecto a la importación. R se colocará automáticamente en el paquete especificado por la entrada del paquete en su archivo de manifiesto
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="package.which.will.contain.R.and.probably.the.main.package.in.the.application" android:versionName="8.6.2011" android:versionCode="1">
<uses-sdk android:minSdkVersion="13" />
Para ver a qué paquete pertenece su archivo R, simplemente abra la carpeta gen / en eclipse (vista de paquetes). Verá un paquete enumerado allí, tendrá el nombre que especificó en su manifiesto. Intente eliminarlo, volverá si todos sus recursos siguen las reglas de nomenclatura correctas y todos sus archivos xml siguen las reglas xml correctas y si la compilación automática está habilitada en eclipse.
La clave para comprender el archivo R es darse cuenta de que está en el mismo paquete que las otras clases aunque esté en un directorio diferente al de otros archivos que pertenecen a su paquete "principal". Una vez que comprenda esto y comprenda la sintaxis y el nombre de los archivos de recursos, solucionar problemas con R es fácil.