2011-07-23 12 views
47

En Android, no estoy seguro de entender la clase R. Voy a través del ejemplo de sudoku, y tengo este fragmento de código:Comprender la clase R en Android

switch (v.getId()) // the id of the argument passed is evaluated by switch statement 
{ 
    case R.id.about_button: // 
    Intent i = new Intent(this, about.class); 
    startActivity(i); 
    break; 
    // More buttons go here (if any) ... 
} 

estoy totalmente nuevo a Java, pero por lo que deduzco que parece que está teniendo entrada (la pantalla táctil se refirió a el botón) y evaluar el argumento. Luego, la declaración de caso se configura si se reconoce el botón Acerca de, y se crea una nueva pantalla de interfaz y luego se navega por el teléfono.

¿Es esto correcto?

Si tengo la esencia de eso, ¿por qué es el trato con la clase "R"?

¿Por qué se llama para reconocer la ID del botón?

Pensé que la superclase (en este proyecto) era la clase SudokuActivity.

+1

posible duplicado de [Android: ¿Qué es R? ¿Por qué es tan críptico?] (Http://stackoverflow.com/questions/4953077/android-what-is-r-why-is-it-so-cryptic) – nbro

Respuesta

68

R.java es la clase generada dinámicamente, creada durante el proceso de compilación para identificar dinámicamente todos los activos (desde cadenas a widgets de Android a diseños), para su uso en clases de Java en la aplicación de Android. Tenga en cuenta que R.java es específico de Android (aunque es posible que pueda duplicarlo para otras plataformas, es muy conveniente), por lo que no tiene mucho que ver con las construcciones de lenguaje Java. Eche un vistazo a here, para más detalles.

+0

¿Hay algún recurso sobre cómo duplicar el 'R .java' proceso de construcción de otros proyectos? –

32

R es una clase que contiene SOLAMENTE constantes públicas. (público estático final).

Es una clase generada (por el complemento de Android en Eclipse) que refleja los diversos valores que definió en el archivo res.

Por ejemplo, usted debe tener algo como:

android:id="@+id/about_button" 

en algún lugar de uno de su archivo xml diseño/menú en el proyecto, y una vez escribió que, Eclipse va a generar una constante en el archivo R (que puedes encontrar en gen/PACKAGE/R.java)

Lee el Resource guide in Android Developers para obtener más información al respecto.

15

R la clase es generada por las herramientas de Android de sus recursos antes de compilar su código. Contiene la constante numérica asignada para cada recurso al que puede hacer referencia en su proyecto. Por ejemplo, tiene un archivo de recursos XML que contiene about_button. Si no tenía la clase R, tendría que usar una cadena "about_button" para referirse a ella en el código. Si comete un error en esta cadena, solo obtendrá información al ejecutar su aplicación. Con R, verá el error mucho antes en el momento de la compilación.

R está estructurado de tal manera que puede consultar los recursos a través de sus clases internas. Por ejemplo, R.id contiene constantes de identificación y R.layout contiene constantes de diseño.