En android R.java se utiliza para proporcionar acceso a los recursos definidos en archivos XML.
Para acceder a los recursos que necesitamos para invocar findViewById() método de paso en la identificación de los recursos que se obtienen.

Esto es similar a la Primavera donde los granos se definen en un contexto XML y se obtienen mediante la aplicación de contexto. context.getBean("beanId")

Esto proporciona un acoplamiento flexible, ya que los granos son definidos externamente y puede ser cambiado sin realizar modificaciones en el código.

Esto me ha confundido. A pesar de lo que Android no se ve similar a la primavera, ¿qué ventaja tiene?

  1. ¿Cuál es el punto de tener un intermedio R.java de todos modos? No podía acabamos de adquirir directamente los recursos de XML mediante el uso de un recurso
    lector/en el contexto de aplicación. por ejemplo, findViewById("resourceId")
  2. No hay ningún tipo de acoplamiento. Desde las referencias en R.java se auto-generado, ¿cómo es posible eliminar un recurso y poner una nueva?
  3. Qué patrón de diseño que sigue(si es que la hay)?
  4. ¿No sería mejor tener recursos inyectados mediante la COI (como Roboguice)? ¿Por qué google decida darnos tales
    una extraña forma de trabajar con los recursos?

Perdón por mi ignorancia. Soy un novato en Java developer tratar de hacer demasiadas cosas a la vez. 🙂
Gracias por todos los comentarios.

  • Quiero sólo para upwote su pregunta dos veces , esta es una pregunta muy interesante

4 Comentarios

  1. 19

    android.R.java no es sólo donde XML identificadores son almacenados. También contiene el acceso a los recursos – tales como dibujables, diseños, cadenas, matrices, y básicamente cualquier cosa que usted puede declarar en recursos.

    Personalmente creo que es útil cuando se usa Eclipse. Me pueden escribir findViewById(R.id. y Eclipse mostrará un tooltip con una lista de opciones para elegir.

    Sin embargo en una plataforma de nivel, yo diría que el codificado identificador de variables ayudar a prevenir errores en la utilización de Cadenas para identificar los recursos, algo que puede ser depurables mientras programación (o durante la compilación, en vez de en tiempo de ejecución).

    • No podía estar más de acuerdo. Creo que el momento de la compilación de comprobar hace que valga la pena. Tiempo de compilación la seguridad es una de las razones por las que me encanta Java en otros lenguajes dinámicos. 🙂
  2. 21

    Mayor ventaja es en la Localización y Proporcionar los recursos alternativos para diferentes tamaños de pantalla.

    e.g puede tener una Cadena de recursos R.string.myname esta podría ser una definición en inglés en /values-en/strings.xml y en español en /values-es/strings.xml

    Sistema tendrá cuidado o recoger el archivo de la derecha dependiendo de la configuración regional, sólo tiene que utilizar @string/myname en su archivo de diseño o R.string.myname en el código.

    Del mismo modo, usted podría tener dos archivos de diseño para el retrato y el paisaje se define en

    res/layout/mylayout.xml
    res/layout-land/mylayout.xml

    En el código que se acaba de especificar R. layout.mipresentación para inflar el layout. Administrador de recursos
    recoge el archivo de layout-land si el dispositivo está en el modo de paisaje.

    Hacer esto de forma manual sería una pesadilla; de ahí la necesidad de R archivo

  3. 1

    La comparación se siente algo un poco (en realidad) raro, porque se comparan dos mecanismo basado en el hecho de que se utilice denominado cosas para hacer cosas. Para la carga de recursos, por ejemplo, echar un vistazo a cómo el manejo de los recursos se realiza en el .Net mundo.


    Se proporciona para en tiempo de compilación la comprobación de si el recurso está disponible. Porque si no, no habrá una estáticos dentro de R.java que apunta a la misma. En la Primavera ejemplo, ¿cómo puede usted estar seguro de que hay un bean llamado beanId? No se proporciona para comprobar si es la derecha tipo de recursos, sin embargo.

    ¿Por qué no es flojo? Tan largo como el nuevo recurso tiene el mismo nombre, se generará la misma constante estática. En la Primavera, se tendría que utilizar el mismo bean nombre.

    Patrón De Diseño? Ninguno. Sólo añade un nivel de direccionamiento indirecto por la nomenclatura de los recursos y, a continuación, se refieren a ellos sólo por su nombre, no directamente por la carga de su verdadera ubicación.

    De hecho, los recursos son inyectado, debido a la carga de recursos debe lidiar con la localización. Ver aquí ¿para Android hace cosas; en el .Net mundo, de otras culturas se empaquetan en el satélite asambleas; la administrador de recursos se carga el derecho basado en la cultura actual.

  4. 0

    También contiene el acceso a los recursos – tales como la identificación, dibujables, diseños, cadenas, matrices, y básicamente cualquier cosa que usted puede declarar en recursos.

    • Gracias por contribuir a StackOverflow. Recomendamos la lectura de la Centro de Ayuda entrada sobre cómo responder a una pregunta. Como está escrito, su respuesta no es una respuesta completa en sí misma. Se refiere al contexto de otras preguntas. Considere la posibilidad de hacer una lista completa de lo que es en R.java, no sólo las cosas que los otros carteles de la izquierda a la salida.

Dejar respuesta

Please enter your comment!
Please enter your name here