Un recurso de tipo String proporciona una cadena de caracteres a la aplicación Android. Se podrá hacer referencia a cada cadena de caracteres desde el código fuente Java de la aplicación o desde otros ficheros XML.

Estas cadenas de caracteres se deben almacenar en un fichero XML que debe alojarse en la carpeta src/main/res/values. Este fichero suele denominarse strings.xml, aunque puede utilizarse cualquier otro nombre. El nombre de la carpeta values podrá contener además los cualificadores necesarios para adaptar las cadenas de caracteres a distintas configuraciones del dispositivo en el que se ejecute la aplicación.

El proyecto que se crea por defecto en Android Studio ya incorpora algún fichero strings.xml dentro de la carpeta values.

studioStrings01

Para trabajar con su contenido tan sólo debes hacer doble clic sobre él. En ese momento aparecerá en el área central de Android Studio la ventana de edición de este archivo.

studioStrings02

La sintaxis o que debe utilizarse para crear un recurso String es como la siguiente:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="string_name">text_string</string>
</resources>

Se deberán crear todos los elementos string que se deseen dentro del elemento resources. Cada elemento string deberá tener un nombre (name) que se utilizará como identificador para hacer referencia a ese recurso el cual se indicará en el lugar de string_name, y un valor en el lugar de text_string.

Referencia a recursos string desde la vista diseño

Si deseas que una propiedad de un elemento de un layout haga referencia a un recurso string, debes utilizar la siguiente sintaxis:

@string/string_name

Donde string_name debe ser el identificador asignado al recurso en su declaración dentro del archivo de recursos.

Por ejemplo, si nuestro layout contiene un objeto TextView (etiqueta de texto), una de sus propiedades es text, en la que se debe indicar el texto que deseamos mostrar en dicho TextView. Ese valor se puede indicar de manera literal (indicando directamente el texto), o bien haciendo referencia al recurso string que contiene el valor.

studioStrings03b

Recuerda que puedes acceder al modo de diseño visual del layout usando la pestaña Design de la parte inferior.

Una manera sencilla de asignar recursos string a una propiedad como text, es usar el botón con 3 puntos que aparece a la derecha del valor de la propiedad. Al usarlo, se mostrará una ventana de diálogo donde puedes elegir cualquiera de los recursos declarados en el proyecto o de los usados por el sistema.

studioStrings05

Desde esa misma ventana puedes usar el botón New Resource que facilita la creación de nuevos recursos, o bien añadir nuevos valores a recursos existentes para otros cualificadores.

studioStrings06

Referencia a recursos string desde archivos XML

Cuando se desee hacer referencia a un recurso string desde un archivo XML debes seguir la misma sintaxis que antes:

@string/string_name

Por ejemplo, los layouts están basados internamente en un archivo XML que define su estructura. Siguiendo con el ejemplo anterior, para utilizar un recurso string en un objeto TextView, se debe usar la propiedad android:text.

studioStrings04

El editor de Android Studio muestra el valor de los recursos string en lugar de la referencia a dicho recurso, aunque en el código del archivo XML se encuentre únicamente la referencia al recurso. Para ver realmente la referencia que existe en el documento XML, debes situar el puntero del ratón sobre el texto literal que se muestra en pantalla.

Referencia a recursos string desde Java

Cuando necesites obtener el valor correspondiente a un recurso string desde el código fuente Java, deberás usar el método getString() sobre el objeto que retorna el método getResources(). Ese primer método debe recibir por parámetro la referencia al recurso como:

R.string.string_name

Por ejemplo, para guardar en una variable de tipo String el valor del recurso hello_world:

String message = getResources().getString(R.string.hello_world);