47 - Archivo strings.xml

Ya se encuentra disponible el nuevo tutorial para aprender android con el nuevo entorno Android Studio propuesto por Google y que remplaza a Eclipse.


El archivo strings.xml se utiliza para almacenar todas las constantes de cadenas de caracteres que se necesitan en un programa (por ejemplo las etiquetas de los objetos Button, los textos fijos de los controles TextView y todos los controles que muestran un texto fijo en el dispositivo)

La idea fundamental es tener todos los mensajes que muestra nuestra aplicación en un archivo (strings.xml)

Ya veremos en el próximo concepto que uno de las ventajas que presenta esta agrupación de string es la posibilidad de facilitar la implementación de aplicaciones en múltiples idiomas.

Problema:

Crear un proyecto que solicite la carga de dos valores. Mediante dos RadioButton permitir seleccionar si queremos sumar o restar. Cuando se presione un botón mostrar en un TextView el resultado de la operación.

1 - Creamos un proyecto llamado: proyecto045
Lo almacenamos en el paquete: com.androidya.proyecto045

El Plugin de Eclipse nos crea automáticamente el archivo strings.xml en la carpeta values que se encuentra en la carpeta res:

strings.xml

Si vemos en su interior podemos ver que ya define tres string llamados app_name, hello_world y menu_settings:

strings.xml

Lo que se encuentra entre las marcas string es lo que se visualizará, por ejemplo en la constante hello_world se almacena el valor "Hello world!". En este archivo crearemos todas las constantes a incluir en nuestro programa. Si vemos en la parte inferior de la ventana donde se visualiza el archivo xml hay una pestaña llamada Resource que nos permite ingresar las distintas constantes de una forma visual:

strings.xml

Creamos primero la interfaz visual disponiendo dos controles de tipo EditText, un RadioGroup con dos RadioButton, un Button y un TextView donde se muestra el resultado de la operación:

strings.xml

Ahora si crearemos los mensajes que mostrarán los dos RadioButton y el Button. Para esto seleccionamos el archivo strings y procedemos a crear las tres constantes:

Una vez que tenemos abierto el archivo strings.xml en modo "Resources" procedemos a presionar el botón "Add..." y seleccionamos "String":

strings.xml

Creamos los nombres de las constantes y los valores, por ejemplo para el mensaje que mostrará el primer RadioButton llamamos la constante con el nombre "radiosuma" y el valor que almacena es "Sumar"

strings.xml

De forma similar creamos las constantes "radioresta" con el valor "Restar" y el botón para operar lo llamamos "botonoperacion" con el valor "Operar". Si seleccionamos la pestaña strings.xml luego podemos ver las tres constantes que hemos creado :

strings.xml

Ahora debemos asociar estas constantes a los controles visuales. Seleccionamos el archivo activity_main.xml y seleccionamos primero el primer RadioButton y buscamos la propiedad Text, presionamos el botón que aparece a la derecha:

strings.xml

En este diálogo seleccionamos la constante de string que acabamos de crear ("radiosuma"):

strings.xml

Ahora tenemos asociada la constante "radiosuma" con la propiedad text del control RadioButton. Lo mismo podríamos haber hecho esto escribiendo en la propiedad @string/radiosuma (@string lo utilizamos para indicar que el siguiente dato después de la barra se trata de una constante definida en el archivo strings.xml)

Utilizar el diálogo de selección de recursos nos facilita no tener que recordar todas las constantes.

Lo mismo hacemos para asociar las constantes para el segundo RadioButton y el Button de operar. Es decir las propiedades text del radio1 debe quedar con el valor "@string/radioresta" y el valor de la propiedad text del objeto button1 debe ser "@string/botonoperacion"

Como vemos cuando asociamos las propiedades text de los controles con las constantes automáticamente vemos en pantalla que los textos de los controles se actualizan con los valores almacenados en dichas constantes.

Para que funcione nuestro programa inicializamos la propiedad On click del Button con el método que sumará o restará:

strings.xml

El código fuente del programa será:

package com.androidya.proyecto045;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;

public class MainActivity extends Activity {
    EditText et1, et2;
    RadioButton rb1, rb2;
    TextView tv1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et1 = (EditText) findViewById(R.id.editText1);
        et2 = (EditText) findViewById(R.id.editText2);
        rb1 = (RadioButton) findViewById(R.id.radio0);
        rb2 = (RadioButton) findViewById(R.id.radio1);
        tv1 = (TextView) findViewById(R.id.textView1);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public void operar(View v) {
        int v1 = Integer.parseInt(et1.getText().toString());
        int v2 = Integer.parseInt(et2.getText().toString());
        if (rb1.isChecked()) {
            int suma = v1 + v2;
            tv1.setText(String.valueOf(suma));
        } else if (rb2.isChecked()) {
            int resta = v1 - v2;
            tv1.setText(String.valueOf(resta));
        }
    }

}

El resultado final del programa en el dispositivo es:

strings.xml

Este proyecto lo puede descargar en un zip desde este enlace: proyecto045.zip

Retornar