Para que sirve el fichero de strings.xml (resources) en Android Studio?

publicado por: Anonymous

Hola estuve ejecutando mi app en android studio y me dieron varios errores en ese fichero, sobretodo en los nombres de las variables y me gustaria que alguien resolviese mi duda, gracias.

solución

Respuesta corta

Sirve para almacenar cadenas que pueden usarse en diferentes partes de la aplicación, sea en Java o en otras partes, como en archivos XML.

De ese modo, el valor de la cadena se encuentra definido en un solo sitio, y se hace referencia a ella mediante su atributo name.

La ventaja es que el código de la app es más flexible. Imagina una cadena que se repite cientos de veces en la app y luego tienes que cambiarla en cada lugar. Además, el tener las cadenas en un archivo de recursos facilita la traducción de la app a otros idiomas. Dicha traducción sería una tarea casi imposible si te dedicas a escribir a mano las cadenas por todas parte en la app.

Si tienes los valores de cadena solamente en los recursos de String la modificas allí y la cadena se actualiza automáticamente donde quiera que se use.

Al recurso string se hace referencia de la siguiente manera:

En Java: R.string.string_name

En XML: @string/string_name

Respuesta larga

Tener recursos como cadenas y otros (dimensiones, estilos, …) forma parte de un conjunto de estrategias en el marco de la programación Android.

En Android Studio por ejemplo, cuando tienes una cadena escrita a mano en cualquier parte, te indica una advertencia de que debes convertir ese recurso… incluso AS busca si dicho recurso existe en el archivo de recursos y con un sólo clic te da la posibilidad de actualizarlo.

Por ejemplo aquí:

introducir la descripción de la imagen aquí

El mensaje que aparece en el cuadro amarillo da dos motivos más que contundentes para aplicar el uso de recursos de cadena:

Los atributos de texto de codificación directa en los archivos de
diseño son incorrectos por varias razones:

  • Al crear variaciones de configuración (por ejemplo, para paisaje o retrato), debe repetir el texto real (y mantenerlo actualizado al
    realizar cambios)

  • La aplicación no se puede traducir a otros idiomas simplemente agregando nuevas traducciones para recursos de cadenas existentes.

[En Android Studio y Eclipse] hay soluciones rápidas para extraer
automáticamente esta cadena codificada en una búsqueda de recursos.

Es por eso que AS recomienda cambiar la cadena hardcoded, por un recurso string, el cual además existe ya en este caso. La imagen muestra el cambio hecho del valor Liturgia+ a la referencia del recurso app_name:

introducir la descripción de la imagen aquí

En el archivo de recursos de cadenas (strings.xml), el recurso se ve así:

introducir la descripción de la imagen aquí

De ese modo, si hace falta actualizarlo, lo haría solamente en strings.xml. En consecuencia, en cualquier layout que yo use: android:text="@string/app_name" o en cualquier código Java que use: R.string.app_name se mostrará el valor actual.

Puedes encontrar más detalles sobre el sentido de esta práctica en el apartado Información general de recursos, de Android:

Siempre debes externalizar los recursos como imágenes y strings
del código de tu aplicación para que puedas mantenerlos de forma
independiente
. Externalizar los recursos también te permite
proporcionar recursos alternativos que admiten configuraciones
específicas de los dispositivos, como idiomas o tamaños de pantalla
distintos, lo que cada vez es más importante, ya que más dispositivos
con tecnología Android están disponibles con configuraciones
diferentes. A fin de brindar compatibilidad con configuraciones
diferentes, debes organizar los recursos del directorio res/ del
proyecto, para lo cual debes usar varios subdirectorios que agrupen
recursos por tipo y configuración.

Hay diferentes tipos de recursos String, los cuales vienen explicados en la página Recursos de strings de la documentación de Android.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *