En AndroidStudio, cuando creo un proyecto usando una actividad vacía, obtengo el siguiente código en el MainActivity.java
archivo:
package my.company.my_proj;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
donde R
se usa una clase críptica nombrada . ¿Cuál es el propósito de esta clase R
?
android.R
?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.
fuente
R es el nombre de sus recursos. Cualquier recurso al que acceda
R.$FOLDER.$RESOURCE
o algo muy similar.Si no se puede resolver, asegúrese de que la ruta sea correcta y que el recurso al que se hace referencia exista (distingue entre mayúsculas y minúsculas; incluya la extensión).
Además, la parte confusa (para mí, de todos modos) es que hay dos diferentes
R
. Si recibe muchos errores "No se puede resolver", intente ver lo que está importando. Intente cambiarlo o quitarlo. O puede intentar limpiar su proyecto (ADVERTENCIA: A veces eso empeora las cosas de lo que ya son).fuente
R
archivo. De vez en cuando, pierde el paso de "regenerar" dejándome sin (o con un vacío)R
yR
está programado para deshacer automáticamente cualquier cambio realizado a mano.Android R.java es un archivo generado automáticamente por AAPT (Herramienta de empaquetado de activos de Android) que contiene ID de recursos para todos los recursos del directorio res /. Si crea cualquier componente en el archivo activity_main.xml, la identificación del componente correspondiente se crea automáticamente en este archivo. Esta identificación se puede utilizar en el archivo de origen de la actividad para realizar cualquier acción en el componente.
fuente