(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);
}
}
Cual es el codigo para cerrar la aplicacion de la seguunda Activity???????????????????????????
ResponderBorrarComo puedo cerrar una aplicación por completo?
ResponderBorrar