En este tutorial vamos a explicar como crear una aplicación hola usuario que nos salude en distintos idiomas que estarán almacenados en un fichero xml.
Este ejercicio es una modificación de un ejercicio realizado anteriormente que lo puede volver a ver desde aquí.
Espero que le guste y le resulte útil. No dude en comentar si tiene cualquier duda.
¡ Saludos !
Enlaces de interés:
Código Fuente
Puede descargar si lo desea el código fuente de este proyecto.
Pasos a seguir:
1. Antes de nada vamos a crear el documento xml que va a contener los idiomas almacenados, el fichero lo guardaremos en la carpeta xml, por lo que la ruta sería res/xml/saludos.xml. Un ejemplo de fichero xml sería el siguiente:
<saludos> <saludo> <espanol>Hola</espanol> <ingles>Hello</ingles> <frances>Bonjour</frances> <aleman>Hallo</aleman> </saludo> </saludos>
2. Creamos la interfaz principal en la que en donde podremos escribir nuestro nombre y también tendremos que añadir un TextView para mostrar los saludos, un ejemplo de interfaz sería el siguiente.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:orientation="vertical" > <EditText android:id="@+id/edtxtNombre" android:layout_width="200dp" android:layout_height="wrap_content" android:hint="@string/escribeTuNombre" android:inputType="textPersonName" > <requestFocus /> </EditText> <Button android:id="@+id/btnAceptar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:text="@string/aceptar" /> </LinearLayout> <TextView android:id="@+id/txtSaludo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/linearLayout1" android:layout_marginTop="94dp" android:gravity="center" android:textAppearance="?android:attr/textAppearanceLarge" /> </RelativeLayout>
3. Empezamos declarando los campos que nos va a hacer falta en la clase de la actividad principal.
public class EscribirNombreActivity extends Activity { /////////////////////////////////////////////////////////////////////////////////// // CAMPOS // /////////////////////////////////////////////////////////////////////////////////// // Campos gráficos private EditText edtxtNombre; private Button btnAceptar; private TextView txtSaludos; /////////////////////////////////////////////////////////////////////////////////// // CAMPOS // ///////////////////////////////////////////////////////////////////////////////////
4. Inicializamos los campos en el método onCreate() y también el evento del botón Aceptar.
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_escribir_nombre); // Inicialización campos gráficos edtxtNombre = (EditText) findViewById(R.id.edtxtNombre); btnAceptar = (Button) findViewById(R.id.btnAceptar); txtSaludos = (TextView) findViewById(R.id.txtSaludo); /////////////////////////////////////////////////////////////////////////////////// // EVENTOS // /////////////////////////////////////////////////////////////////////////////////// btnAceptar.setOnClickListener(new OnClickListener() { /** * Muestra los saludos en diferentes idiomas dependiendo del nombre * introducido */ @Override public void onClick(View v) { // Limpia todo el contenido anterio txtSaludos.setText(""); // Muestra el listado de saludos mostrarSaludos(obtenerSaludos(edtxtNombre.getText().toString())); } });
5. Creamos el método más importante de la aplicación, el método que obtiene los saludos almacenados en el fichero xml que acabamos de crear.
/** * Obtiene los saludos en diferentes idiomas almacenados en un fichero xml * * @param nombre El nombre * @return Los saludos */ public ArrayList<String> obtenerSaludos(String nombre){ // Campos ArrayList<String> saludos; // Almacena los saludos en diferentes idiomas XmlResourceParser xml; // Almacena el recurso del archivo xml int evento; // Almacena el evento del xml String idioma; // Almacena el idioma que se quiere leer // Inicialización de campos saludos = new ArrayList<String>(); evento = 0; idioma = ""; try { // Obtiene el recurso xml xml = getResources().getXml(R.xml.saludos); // Obtiene el evento evento = xml.getEventType(); // Lee el documento xml while(evento != XmlPullParser.END_DOCUMENT){ switch (evento) { // Establece que etiqueta de idioma se está leyendo case XmlPullParser.START_TAG: if (xml.getName().equals("espanol")){ idioma = xml.getName(); } if (xml.getName().equals("ingles")){ idioma = xml.getName(); } if (xml.getName().equals("frances")){ idioma = xml.getName(); } if (xml.getName().equals("aleman")){ idioma = xml.getName(); } break; // Obtiene el texto de la etiqueta de idioma que se ha leido case XmlPullParser.TEXT: if (idioma.equals("espanol")){ saludos.add(xml.getText() + " " + nombre); } if (idioma.equals("ingles")){ saludos.add(xml.getText() + " " + nombre); } if (idioma.equals("frances")){ saludos.add(xml.getText() + " " + nombre); } if (idioma.equals("aleman")){ saludos.add(xml.getText() + " " + nombre); } } evento = xml.next(); } } catch (NotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (XmlPullParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return saludos; }
6. Finalmente creamos el método que nos va a mostrar los saludos en pantalla.
/** * Muestra los saludos de un array de saludos * @param saludos La lista de saludos */ public void mostrarSaludos(ArrayList<String> saludos){ // Recorre el array de saludos for (String saludo : saludos) { // Muestra el saludo con una separación de línea txtSaludos.append(saludo +"\n"); } }
FIN
No hay comentarios:
Publicar un comentario