Segunda App Android (paso de mensajes)

Hola de nuevo, hoy les traigo una app para android que pretende mostrar cómo se pasan mensajes entre actividades, consiste simplemente en un login de usuario.

Tendremos dos actividades, la primera donde introduciremos un usuario y contraseña, y la segunda, donde comprobaremos si son correctos, por lo tanto tendremos dos archivos .xml y .java, bien, vamos primero con el diseño de las actividades:

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:android1="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/bienvenida"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <LinearLayout
        android:layout_width="wrap_content"
    	android:layout_height="wrap_content"
        android:orientation="horizontal">
    <TextView
        android:id="@+id/textUser"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/user" />

    <EditText
        android1:id="@+id/CampoUsuario"
        android1:layout_width="match_parent"
        android1:layout_height="wrap_content"
        android1:ems="10" >

    </EditText>

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
    	android:layout_height="wrap_content"
        android:orientation="horizontal">
    <TextView
        android:id="@+id/textPass"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/pass" />

    <EditText
        android1:id="@+id/CampoPass"
        android1:layout_width="match_parent"
        android1:layout_height="wrap_content"
        android1:ems="10"
        android1:inputType="textPassword" >

    </EditText>

    </LinearLayout>

    <Button
        android1:id="@+id/boton"
        android1:layout_width="wrap_content"
        android1:layout_height="wrap_content"
        android1:text="Login" />

</LinearLayout>

comprueba.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:android1="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/result"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text=""
    />
</LinearLayout>

Bien, comento algunas cosas, los ‘LinearLayout’ es lo que estructura principalmente nuestros objetos, vendrían a ser como los ‘div’ cuando estamos creando webs, en el archivo main.xml veis que he declarado tres, uno con orientación vertical (va introduciendo los objetos uno debajo del otro) y otros dos horizontales, que están contenidos en el primero.

Cuando vamos a definir el ancho o alto de algún objeto, tenemos posibilidades como ‘fill_parent’ o ‘wrap_content’, con el primero, nuestro objeto toma las proporciones (ancho o alto, según) de su padre, y con el segundo, toma las proporciones de su contenido.

El main.xml quedaría así:

main.xml
Bien, ahora vamos con Java, aquí van los códigos, después explico como van:
Login.java (main)

package com.login.darkvid;

import android.app.Activity;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.SimpleAdapter.ViewBinder;

public class Login extends Activity implements View.OnClickListener{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        View Login_button=findViewById(R.id.boton);
        Login_button.setOnClickListener(this);

    }

public void onClick(View v) {

	EditText u=(EditText)findViewById(R.id.CampoUsuario);
    String usuario=u.getText().toString();

    EditText p=(EditText)findViewById(R.id.CampoPass);
    String password=p.getText().toString();

	Intent vamonos=new Intent(this,Comprueba.class);
	vamonos.putExtra("var_usuario", usuario);
	vamonos.putExtra("var_password", password);
	startActivity(vamonos);

}

}

Bien, primeramente, nuestra clase tiene que derivar de la superclase Activity (queremos crear una actividad :P) y tiene que implementar el método ‘OnClickListener’ de la clase View, recordar que de la clase View descienden todos los objetos que conforman nuestra interfaz, TextView, Buttons, EditText… etc etc

Bien, lo que queremos es crear un escuchador para el botón que hemos creado, así que creamos un objeto view (button) y le decimos que será la propia clase Login quien se encargue de tratar el evento de click.

A continuación debemos implementar el método OnClick, al que le pasamos un objeto View, comprobamos que el id del objeto que le pasamos es igual al que nosotros estamos esperando (eso sería en el caso de tener más botones, yo no lo hice ya que solo tengo uno, deberíamos hacer un switch), bien, capturamos en objetos EditText lo que hemos escrito en el login y lo convertimos a String.

Por último creamos un Intent, que vendría a ser como una intención de hacer algo, esta es la parte más importante del code ya que hace que se comuniquen las dos actividades, creamos el intent y como parámetros le pasamos la clase origen (this) y la clase destino (Comprueba.class). Seguido añadimos información al intent que hemos creado, con el método putExtra (nombre_variable, valor_variable), esto es lo que nos hace compartir la información entre actividades. Finalmente iniciamos la actividad con nuestro intent, en este momento, la primera actividad pasa a estar pausada y la segunda pasa a estado activo, para volver a restaurar la anterior tenemos los objetos Bundle del constructor de la clase, un Bundle vendría a ser un contenedor para otras variables, así, Android guarda ‘las variables’ para después volver a restaurarlas.

Bien, vamos con Comprueba.java

package com.login.darkvid;

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

public class Comprueba extends Activity {

		protected void onCreate(Bundle savedInstanceState){
			super.onCreate(savedInstanceState);
			setContentView(R.layout.comprueba);

			String usuario=getIntent().getStringExtra("var_usuario");
			String password=getIntent().getStringExtra("var_password");

			String user_default="darkvidhck";
			String user_pass="godintheshadow";

			TextView texto=(TextView)findViewById(R.id.result);

			if(usuario.equals(user_default) &amp;&amp; password.equals(user_pass)){
				texto.setText("Datos correctos");
			}else{
				texto.setText("Datos incorrectos");
			}

		}

}

Bien, lo primero que hacemos es recuperar los datos del intent, y lo demás no tiene mucha explicación, si los parámetros que hemos pasado con el user y pass que he predefinido son iguales a los capturados nos muestra un mensaje u otro, no tiene mayor complicación, podríamos haber tratado las pass con funciones resumen y demás, pero tampoco era necesario en este caso

Pues eso es todo, hasta la próxima 🙂

HackSaludos!

Anuncios

Acerca de Darkvidhck

Estudiante de ingeniería informática, haciendo mis pinitos como desarrollador web, programador, gamer y Linuxero. Aficionado a la seguridad. Eterno viciado al conocimiento.
Esta entrada fue publicada en Programación y etiquetada , , , . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s