martes, 20 de enero de 2015

(clase #5) ANDROID STUDIO: INTERACCION ENTRE DOS ACTIVITY, CERRAR UNA APLICACION

(CLASE #5) ANDROID STUDIO: INTERACCION ENTRE DOS ACTIVITY., COMUNICACIÓN ENTRE DOS PANTALLAS.

Esta práctica de Android studio consistirá en abrir un activity desde otro activity, además también enviaremos un parámetro al activity secundario, o activity que será accedido desde el activity principal. Para ello utilizaremos pocas herramientas entre ellas recordar que los títulos mostrados son herramientas de etiqueta (TextView).
Como es costumbre mencionaremos la herramientas que nos ayudaran a la programación con sus respectivos Id y Text.
·         En el formulario principal tendremos:
o    (EditText) Id:et_texto; Text=”hola desde el principal”
o   (Button) Id:btn_enviar; Text=”ENVIAR”
·         En el formulario secundario utilizaremos:
o   (TextView) id:tv_recibido; Text: ”texto”;
o   (Button) id:btn_close; Text: “cerrar”

El formulario principal debería quedar de la siguiente forma:


Para agregar una nueva Actividad (Activity) debemos realizar los paso que nos muestra la siguiente imagen, y luego ponerle el nombre: activity_secundario para el caso de este proyecto.


Entonces con lo mencionado en la primera parte de la descripción del proyecto en Android studio nuestra segunda interfaz debería quedar de la siguiente forma. No olvide colocar los id, por si desea ver algo del código fuente que dejaremos en la última parte de la descripción de este proyecto:


Ya sabemos que para cambiar los colores y tamaño de textos mostrados solamente debemos editar las propiedades TextColor y Texsize.
Ahora hablaremos un poco del código que implementaremos recordándoles que pueden ver el video tutorial de cada tema para que las cosas queden mejor alcaradas.
PRIMERA ACTIVIDAD (ACTIVITY).- como ya sabemos por las anteriores guias, debemos declarar las variables que nos ayudaran a enlazar la interfaz con la programación.
Luego abriremos líneas de código que nos ayudara a enviar un mensaje desde esta actividad a la actividad secundaria, utilizando la clase interna Bundle y el método de clase PutExtras(“clave”,”parámetro a enviar”); la clave nos ayudara a reconocer lo enviado en el formulario que recibirá el mensaje. Bueno veamos un poco como quedaría el código, recuerde leer la descripción que se  redacta para cada línea de código:



Todo lo descrito anteriormente lo encontramos en le método onclicBtnEnviar(View view), el parámetro View porque utilizaremos este método en el evento clic del botón btn_enviar. También veremos la clase Intent la cual nos ayudara a llamar o invocar la interfaz que queramos en este caso la interfaz es Activity_secundario.
AHORA VEREMOS EL PROGRAMA EN EL ACTIVITY SECUNDARIO

Aquí volveremos a ver la Clase Bundle ya que esta es la clase encargada de ser como intermediario o mensajero dicho en términos más sencillos esta clase nos ayuda a enviar el mensaje, y como lo dijimos antes para enviar el mensaje necesitamos un clave, esta clave en el ejemplo es “texto”, mediante la cual recepcionaremos el mensaje en la variable textoreci. Luego simplemente escribiremos el mensaje recibido en pantalla.



Ahora para dar funcionalidad el botón CERRAR, utilizaremos el método onclicBtnClose(View vie), dentro pondremos el método finish() que cerrara la actividad.

AHORA NO OLVIDEMOS ANTES DE EJECUTAR LA APLICAION VINCULAR LOS EVENTOS ONCLIC, DE CADA BOTON CON EL METODO QUE LE CORRESPONDE ESTO PUDE VERLO EN EL VIDEO TUTORIAL.

·         btn_enviar: onclic(onclicBtnEnviar(View, view))
·         btn_Close: onclic(onclicBntClose(View view))

Veamos el resultado de la aplicación:





ahora les dejaremos el código fuente:

primero el Xml del formulario Principal:

<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" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ACTIVITY PRINCIPAL"
        android:textSize="30dp"
        android:id="@+id/textView"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textColor="#ff31aaff"
        android:textStyle="bold" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Texto a Enviar:"
        android:id="@+id/textView2"
        android:layout_below="@+id/textView"
        android:layout_alignLeft="@+id/textView"
        android:layout_alignStart="@+id/textView"
        android:layout_marginTop="52dp"
        android:textSize="25dp" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/et_texto"
        android:layout_below="@+id/textView2"
        android:layout_alignLeft="@+id/textView2"
        android:layout_alignStart="@+id/textView2"
        android:layout_marginTop="40dp"
        android:text="HOLA DESDE EL PRINCIPAL" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Enviar"
        android:id="@+id/btn_enviar"
        android:textSize="25dp"
        android:layout_marginTop="96dp"
        android:onClick="onclicBtnEnviar"
        android:layout_below="@+id/et_texto"
        android:layout_centerHorizontal="true" />
</RelativeLayout>

Ahora dejaremos el xml del segundo formulario:

<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" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.dgafz.clase5.Activity_secundario"
    android:id="@+id/layout1">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ACTIVITY SECUNDARIO"
        android:id="@+id/textView3"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textSize="30dp"
        android:textColor="#ffff4731"
        android:textStyle="bold" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Mensaje Recibido:"
        android:id="@+id/textView4"
        android:layout_below="@+id/textView3"
        android:layout_alignLeft="@+id/textView3"
        android:layout_alignStart="@+id/textView3"
        android:layout_marginTop="40dp"
        android:textColor="#ff3924ff"
        android:textSize="25dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="texto"
        android:id="@+id/tv_recibido"
        android:layout_marginTop="46dp"
        android:textStyle="bold"
        android:textSize="30dp"
        android:layout_below="@+id/textView4"
        android:layout_alignLeft="@+id/textView4"
        android:layout_alignStart="@+id/textView4" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="cerrar"
        android:id="@+id/btn_close"
        android:layout_below="@+id/tv_recibido"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="127dp"
        android:onClick="onclicBtnClose" />
</RelativeLayout>

ahora dejaremos el código java del formulario principal

package com.dgafz.clase5;

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;


public class MainActivity extends ActionBarActivity {
    //declaramos la variables de enlace
    private EditText m_et_texto;
    private Button m_btn_enviar;
    //fin de variables

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //ahora inicializamos la variables
        m_et_texto=(EditText) findViewById(R.id.et_texto);
        m_btn_enviar=(Button) findViewById(R.id.btn_enviar);
        //fin de inicializacion
    }
    //otros metodos
    //ahora programamos el boton enviar
    public void onclicBtnEnviar(View view)
    {
        //primero recuperamos el texto que vamos a enviar
        String texto=m_et_texto.getText().toString();
        //CREAMOS LA CLASE QUE SERA EL MENSAJERO
        Bundle TextoEnviar=new Bundle();
        TextoEnviar.putString("texto",texto);
        //declaramos la interfaz que queremos abrir
        Intent i=new Intent(this,Activity_secundario.class);//(de donde vamos a llamar , a quien vamso a llamar)
        //ahora mediante este codigo le decimos a la clse mensajer enviar
        i.putExtras(TextoEnviar);
        //iniciamos el segundo activity
        startActivity(i);
    }
    //fin otros metodos
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

código java del segundo formulario:

package com.dgafz.clase5;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class Activity_secundario extends ActionBarActivity {

    //declaramos la variables
    private TextView m_tv_recibido;
    private Button m_btn_close;
    //fin de las variables
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_activity_secundario);
        //inicalizamos la variables
        m_tv_recibido=(TextView) findViewById(R.id.tv_recibido);
        m_btn_close=(Button) findViewById(R.id.btn_close);
        //fin incializar las variables

        //ahora debemos recibir el valor que nos enviaron para ello nos ayudara la calse bundle
        Bundle Textorecibido=this.getIntent().getExtras();
        //ahora le diremos que es lo que deseamos recibir me diante al palabra clave en este caso pusimos "texto"
        String textoreci=Textorecibido.getString("texto");
        //ahora lo mostraremos en pantalla
        m_tv_recibido.setText(textoreci);
    }
    //otros metodos
    public  void onclicBtnClose(View view)
    {
        //codigo para cerrar la aplicaion
        finish();
    }
    //fin de otros metodos
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_activity_secundario, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}





2 comentarios:

  1. Cual es el codigo para cerrar la aplicacion de la seguunda Activity???????????????????????????

    ResponderBorrar
  2. Como puedo cerrar una aplicación por completo?

    ResponderBorrar