Diferencia entre revisiones de «Usuario:ManuelRomero/Android/Intents»

De WikiEducator
Saltar a: navegación, buscar
(Página creada con '{{:Usuario:ManuelRomero/Android/nav}} <br> ===Intents=== ;Referencia http://developer.android.com/reference/android/content/Intent.html *Definición de la página oficial {{De…')
 
(Devolver valores a una activity que me invocó)
 
(14 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
 +
{{TEP}}
 +
{{Reflexion| #'''''Se han detectado puntos incompletos en el contendio de este tema'''''
 +
''En breve se actualizará, '''de momento no se recomienda su estudo''' ''.}}
 
{{:Usuario:ManuelRomero/Android/nav}}
 
{{:Usuario:ManuelRomero/Android/nav}}
 
<br>  
 
<br>  
 
===Intents===
 
===Intents===
 +
[[Archivo:claseIntent.png]]
 
;Referencia
 
;Referencia
 
  http://developer.android.com/reference/android/content/Intent.html
 
  http://developer.android.com/reference/android/content/Intent.html
 
*Definición de la página oficial
 
*Definición de la página oficial
 
{{Definicion|'''''Un intent es una descripción abstracta de una operación que va a llevar a cabo}}
 
{{Definicion|'''''Un intent es una descripción abstracta de una operación que va a llevar a cabo}}
 +
*Los objetos de tipo android.content.Intent se utilizan para enviar mensajes asíncronos dentro de una aplicación o entre varias aplicaciones.
 +
*Estos mensajes permiten desde una aplicación lanzar o invocar la ejecución de un componente de aplicación
 +
#Activity.
 +
#Service.
 +
#ContentProvider.
 +
#Boradcast.
 +
 +
*Así, los Intents permiten enviar o recibir información desde y hacia otros componetes de aplicación. 
 +
*Esta información puede consistir simplemente en iniciar la ejecución de una aplicación en android, por ejemplo una actividad.
  
*Es una clase da android que permite instanciar nuevos objetos Activity.
 
*Es decir nos permite especificar una Activity para que se ejecute
 
*En Android una aplicacióno o componente  no sólo es una Activity
 
*En Android tenemos los siguientes componentes
 
#Activity como componenetes de UI
 
#Services
 
#Código ejecutándose en segundo plan o
 
#Broadcast receivers
 
#Broadcst messages código que responde a un mensaje de transmisión
 
#Proveedores de contenidos código que abstrae los datos
 
  
 
==Intents para lanzar activity==
 
==Intents para lanzar activity==
*Uso extremasamente sencillo
+
*Un Intent es un objeto que tiene una estructura de datos que contiene la información necesaria para lazar la ejecución de un componente.
*Realicemos un ejemplo sencillo
+
*Este componentes puede ser como ya hemos comentado una activity desarrollada en nuestra aplicación o bien también podemos ejecutar una  aplicación disponible en android http://developer.android.com/guide/appendix/g-app-intents.html
*Idea: hacer un programa como se ve en la figura
+
*Al Intent se le puede asociar la Activity que queremos que se lance, o bien a la Activity  asociarle un nombre de accion para que el Intent tenga asociada dicha accion y al invocarlo se puda ejecutar la Activity que tenga asociada dicha acción
*Cada pantalla será un activity.
+
*La forma de asociar a una Activity, una acción usado el elemento  <intent-filter> en el fichero Manifest de nuestra activity
*El click del activity 1 abrirá el activity 2
+
==Usando un Intent==
*El click del activity 2 cerrará el activity 2 y volverá al activity 1
+
*Un intent necesita información para saber qué aplicación tiene que lanzar
[[Imagen:intent1.png|400px]]
+
*Esta información la podemos pasar de diferente manera.
===Empezamos===
+
*Desde el punto de vista de la información, un Intent es una estructura de datos con la siguiente composición :
*Creamos un proyecto nuevo llamado p.e. '''''usandoIntents'''''
+
#'''''component''''', es el componente de la aplicación que queremos que se ejecute.
*Clase '''''ActividadPrimera.java'''''
+
#'''''action''''', indica la acción asociada al Intent. con ella trataremos de encontrar los componetes que llevan a caba esa acción.
*Layout ''''''actividad_primera.xml'''''
+
#'''''data''''', son los datos necesarios para una determinada accion.
**Por supuesto los nombres son ''opciones''
+
#'''''category''''', forma de agrupar actividades que detallan  conciones que  pueden hacer
*Creamos una clase nueva llamada '''''ActividadSegunada.java'''''
+
#'''''extra''''', permite dar valores a un objeto Bundle en formato etiqueta-valor; Con ello podremos pasar valores al componentes que invoquemos.
[[Imagen:claseNueva.png]]
+
#'''''type''''', especifica de forma explícita el tipo de datos del intent.
*Al tener dos activity debemos indicarlo en el fichero '''''Manifiest.xml'''''
+
*Vamos a ver a continuación como se puede usar un Intent
*Añadimos la nueva clase activity
+
===Intent Explícito o Implícito===
*Vemos a continuación la parte del manifest con las clases
+
;Intent explícito
<source lang=xml>
+
*Un intent es explícito cuando de forma explícita detallamos el componente que queremos lanzar.
      <activity
+
*Para ello detallaremos el componente.
            android:name=".ActividadPrimera"
+
*Esto se puede hacer en el contructor o usando métodos explícitos de la clase
            android:label="@string/title_activity_actividad_primera" >
+
*En el constructor
            <intent-filter>
+
Intent(Context packageContext, Class<?> cls)
                <action android:name="android.intent.action.MAIN" />
+
<source lang = java>
                <category android:name="android.intent.category.LAUNCHER" />
+
/*Actividad 2 es una actividad del paquete*/
            </intent-filter>
+
...
      </activity>
+
    Intent i = new Intent(this, Actividad2.class);
      <activity
+
    startActivity(i);
            android:name=".ActividadSegunda"
+
...
            android:label="@string/title_activity_actividad_segunda" >
+
            <intent-filter>
+
                <action android:name="com.example.objetosintents.ActividadSegunda" />
+
                <category android:name="android.intent.category.DEFAULT" />
+
            </intent-filter>
+
      </activity>
+
 
</source>
 
</source>
*Nos debemos fijar en el elemento '''''intent-filter'''''
+
*Usando métodos de la clase Intent para establecer el componente que queremos invocar
*En este caso el elementos '''''action''''' tiene ''el nombre del filtro especificado al nombre  de la clase', a diferencia del ''activity principal' que contenía el valor '''''MAIN'''''
+
getComponent(...), getClass(...) getClassName(...).
**De este modo otras actividades que quieran llamar a ésta lo harán por este nombre
+
*Y para recuperar el nombre del componente
*El elemento '''''category''''' para el filtro  contiene el valor '''''DEFAULT''''' el lugar del valor '''''LAUNCHER'''''
+
getComponent()
*Esto indica que esta actividad será lanzada por defecto siendo invocada por otra mediante el método ''''''startActivity()'''''' no desde el lanzador de aplicaciones del dispositivos
+
*Ejemplo
 +
<source lang=java>
 +
...
 +
Intent i = new Intent();
 +
i.setClass(this,Actividad2.class);
 +
startActivity(i);
 +
...
 +
/*Otra manera de hacer lo mismo*/
 +
Intent i=new Intent();
 +
i.setComponent(new ComponentName(this,Actividad2.class));
 +
startActivity(i);
  
===Los layouts===
+
/*Lo mismo usando el nombre del java*/
*Creamos los dos layouts para cada activity
+
...
*Cada uno contendrá una etiqueta de texto o label y un botón (por las especificaciones primeras
+
Intent i = new Intent();
*Los layouts les hemos llamado en este caso '''''actividad_primera.xml''''' y '''''actividad_segunda.xml'''''
+
i.setClassName(this, "com.example.interaccionactivitys.Actividad2");
;actividad_primera.xml
+
startActivity(i);
 +
...
 +
</source>
 +
;Intent Implícito
 +
*En este caso creamos el intent pasando un nombre de accion.
 +
*El sistema buscará qué actividad puede realizar esa acción y la ejecutará.
 +
*En caso de haber más de una actividad  que pueda realizar esa acción nos mostrará la lista para que la realicemos.
 +
*La forma de asociar a una Activity una acción es usando el elemento '''''<action-filter>''''' del fichero manifest
 +
*La accion la podemos pasar en el constructor del Intent.
 +
*Android tiene aplicaciones por defe
 +
 
 +
==Intents con parámetros==
 +
*Es muy  posible que queramos pasar/recuperar datos entre actividades
 +
*Por ejemplo que una activity me pase usuario y contraseña para validar
 +
===Pasar valores a través de un Intent===
 +
 
 +
#Una vez creado el Intent, creamos un objeto Bundle
 +
#A este objeto le asignamos valores en la forma de parejas etiqueta-valor usando métodos del tipo '''''putxxx'''''
 +
#asociamos el objeto Bundle al Intent con el método '''''putExtras( Bundle )''''' y ya tenemos los valores preaparados para que sean pasados a la activity o componente que active el Intent.
 
<source lang=java>
 
<source lang=java>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+
//Primero defino el intent y le asocia una actividad que quiero que invoque.
    xmlns:tools="http://schemas.android.com/tools"
+
Intent intencion = new Intent();
    android:layout_width="match_parent"
+
intencion.getClass(this,miclase.class);
    android:layout_height="match_parent" >
+
  
    <TextView
+
//Defino el bundle para asignar parejas variable-valor
        android:id="@+id/textView1"
+
Bundle datos = new Bundle();
        android:layout_width="match_parent"
+
datos.putInt("edad",25);
        android:layout_height="wrap_content"
+
datos.putString("nombre","pedro");
        android:text="@string/actividad1"
+
        tools:context=".ActividadPrimera" />
+
  
    <Button
+
//Asocio el bundle al intent
        android:id="@+id/button1"
+
intencion.putExtras(datos);
        android:layout_width="wrap_content"
+
        android:layout_height="wrap_content"
+
        android:layout_alignParentLeft="true"
+
        android:layout_below="@+id/textView1"
+
        android:layout_marginLeft="40dp"
+
        android:layout_marginTop="41dp"
+
        android:onClick="activity1"
+
        android:text="Activar activity 2" />
+
  
</RelativeLayout>
+
//Activo la activity
 +
startActivity(intencion);
 
</source>
 
</source>
;actividad_segunda.xml
+
 
 +
===Leer los datos que pasa el intent===
 +
*Para leer los datos en la activity invocada con el intent, se hace de manera sencilla
 +
#Creamos un objeto budle
 +
#Lo instanciamos con el bundle que nos retorna el método getExtras del intent que lo ha activado (con el método getIntent()
 +
#Lemos los valores con los métodos '''''getXXX(etiqueta)'''''
 +
 
 
<source lang=java>
 
<source lang=java>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+
public class ClaseInvocadaConIntent  extends Activity {
    xmlns:tools="http://schemas.android.com/tools"
+
....
    android:layout_width="match_parent"
+
@Override
    android:layout_height="match_parent" >
+
protected void onCreate(Bundle estado){
    <TextView
+
        android:id="@+id/textView1"
+
Bundle valores = getIntent().getExtras();
        android:layout_width="wrap_content"
+
int edad = valores.getInt("edad");
        android:layout_height="wrap_content"
+
String nombre = valores.getString("nombre");
        android:text="@string/actividad2"
+
                ......
        tools:context=".ActividadSegunda" />
+
}
    <Button
+
....
        android:id="@+id/button1"
+
        android:layout_width="wrap_content"
+
        android:layout_height="wrap_content"
+
        android:layout_below="@+id/textView1"
+
        android:layout_centerHorizontal="true"
+
        android:layout_marginTop="58dp"
+
        android:onClick="activity2"
+
        android:text="Cerrar actividad 2 y volver a 1" />
+
</RelativeLayout>
+
 
</source>
 
</source>
*En el fichero '''''string.xml''''' tenemos las etiquetas usadas
+
 
<source lang=xml>
+
===Devolver valores a una activity que me invocó===
  <string name="title_activity_actividad_primera">ActividadPrimera</string>
+
*Ahora vamos a ver como es el proceso en el que la activity invocada retorna valores a la activity que la invocó
  <string name="title_activity_actividad_segunda">ActividadSegunda</string>
+
[[Archivo:ActivityRetornaValores.png]]
  <string name="actividad1">Esta es la actividad primera y principal</string>
+
;Situación
  <string name="actividad2">Esta es la actividad segunda</string>
+
*La activity A invoca a la activity B
</source>
+
*La activity B  retorna un valor a la activity A
===El fichero java===
+
;Paso 1
*Ahora sólo queda lo que hacemos en el método del click
+
La activity A llama a la Activity B
*En la actividad primera tenemos el método '''''activity1''''' (ver el fichero del layout de esta actividad)
+
Para ello usamos el método
<source lang=java>
+
public void activity1(View v){
+
    startActivity (new Intent("com.example.objetosintents.ActividadSegunda"));
+
    }
+
</java>
+
*La forma de iniciar una actividad es con el método '''''startActivity()''''
+
*como parámetro le pasamos una instancia de un objeto Intents con el nombre de la clase de la actividad como parámetro
+
*Se puede plantear más seccionado pero es lo mismo
+
 
<source lang=java>
 
<source lang=java>
  public void activity1(View v){
+
startActivityForResult(Intnet i, int codigo);
    Intent claseAEjecutar = new Intent();
+
    claseAEjecutar.setAction("com.example.objetosintents.ActividadSegunda");
+
    startActivity (claseAEjecutar);
+
    }
+
 
</source>
 
</source>
*Igualmente podemos especificar el nombre del la clase .class
+
*En este caso pasamos un segundo parámetro que es un código que indentifica la invocación de la acción
<source lang=java>
+
*Este código  permitirá asegurarnos que retorno de esta activity y no de otra.
  public void activity1(View v){
+
*Supongamos que una activity pueda invocar a varias.
    Intent claseAEjecutar = new Intent();
+
**en el retorno de cualquiera de ellas si retorna valor, siempre iré al método '''''onActivityResult(int resquest, int result , Intendt)
    claseAEjecutar.setClass(this,  ActividadSegunda.class);
+
**Analizando el parámetro '''''request''''' podemos ver de qué intent venimos (que será el mismo valor que le hayamos pasado en la invocación.
    startActivity (claseAEjecutar);
+
 
    }
+
<source lang = java>
</source>
+
........
*Y lo mismo de manera más compacta
+
public void clickActividad_B(View v){
<source lang=java>
+
Intent i = new Intent(this,ActividadB.class);
public void activity1(View v){
+
String nombre=((EditText)findViewById(R.id.TNombre)).getText().toString();
    startActivity (new Intent(this,ActividadSegunda.class));
+
String apellido=((EditText)findViewById(R.id.editText1)).getText().toString();
    }
+
Bundle datos = new Bundle();
 +
datos.putString("nombre",nombre);
 +
datos.putString("apellido",apellido );
 +
i.putExtras(datos);
 +
startActivityForResult(i,OK_ACTIVIDAD_2);
 +
}
 +
 
 +
public void clickActividad_C(View v){
 +
Intent i = new Intent(this,ActividadB.class);
 +
String nombre=((EditText)findViewById(R.id.TNombre)).getText().toString();
 +
String apellido=((EditText)findViewById(R.id.editText1)).getText().toString();
 +
Bundle datos = new Bundle();
 +
datos.putString("nombre",nombre);
 +
datos.putString("apellido",apellido );
 +
i.putExtras(datos);
 +
startActivityForResult(i,OK_ACTIVIDAD_3);
 +
}
 +
 
 +
@Override
 +
public void onActivityResult(int codAccion, int codDatos, Intent i){
 +
.........
 +
 +
if (codAccion==OK_ACTIVIDAD_2)
 +
Log.i("ActividadA","Vengo de actividad OK_2, Actividad B");
 +
if (codAccion==OK_ACTIVIDAD_3)
 +
Log.i("ActividadA","Vengo de actividad OK_3, Actividad C");
 +
 +
......
 +
 
 +
}
 +
}
 
</source>
 
</source>
=Intents con parámetros=
+
 
*Es muy  posible que queramos pasar/recuperar datos entre actividades
+
*Por ejemplo que una activity me pase usuario y contraseña para validar
+
 
===Devolviendo resultados===
 
===Devolviendo resultados===
 
*Ahora queremos hacer un diseño como el siguiente
 
*Ahora queremos hacer un diseño como el siguiente

Última revisión de 03:25 13 ene 2014

Road Works.svg Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos.
Ver página de charlas.
Road Works.svg






Intents

ClaseIntent.png

Referencia
http://developer.android.com/reference/android/content/Intent.html
  • Definición de la página oficial


Icon define.gif

Definición

Un intent es una descripción abstracta de una operación que va a llevar a cabo


  • Los objetos de tipo android.content.Intent se utilizan para enviar mensajes asíncronos dentro de una aplicación o entre varias aplicaciones.
  • Estos mensajes permiten desde una aplicación lanzar o invocar la ejecución de un componente de aplicación
  1. Activity.
  2. Service.
  3. ContentProvider.
  4. Boradcast.
  • Así, los Intents permiten enviar o recibir información desde y hacia otros componetes de aplicación.
  • Esta información puede consistir simplemente en iniciar la ejecución de una aplicación en android, por ejemplo una actividad.


Intents para lanzar activity

  • Un Intent es un objeto que tiene una estructura de datos que contiene la información necesaria para lazar la ejecución de un componente.
  • Este componentes puede ser como ya hemos comentado una activity desarrollada en nuestra aplicación o bien también podemos ejecutar una aplicación disponible en android http://developer.android.com/guide/appendix/g-app-intents.html
  • Al Intent se le puede asociar la Activity que queremos que se lance, o bien a la Activity asociarle un nombre de accion para que el Intent tenga asociada dicha accion y al invocarlo se puda ejecutar la Activity que tenga asociada dicha acción
  • La forma de asociar a una Activity, una acción usado el elemento <intent-filter> en el fichero Manifest de nuestra activity

Usando un Intent

  • Un intent necesita información para saber qué aplicación tiene que lanzar
  • Esta información la podemos pasar de diferente manera.
  • Desde el punto de vista de la información, un Intent es una estructura de datos con la siguiente composición :
  1. component, es el componente de la aplicación que queremos que se ejecute.
  2. action, indica la acción asociada al Intent. con ella trataremos de encontrar los componetes que llevan a caba esa acción.
  3. data, son los datos necesarios para una determinada accion.
  4. category, forma de agrupar actividades que detallan conciones que pueden hacer
  5. extra, permite dar valores a un objeto Bundle en formato etiqueta-valor; Con ello podremos pasar valores al componentes que invoquemos.
  6. type, especifica de forma explícita el tipo de datos del intent.
  • Vamos a ver a continuación como se puede usar un Intent

Intent Explícito o Implícito

Intent explícito
  • Un intent es explícito cuando de forma explícita detallamos el componente que queremos lanzar.
  • Para ello detallaremos el componente.
  • Esto se puede hacer en el contructor o usando métodos explícitos de la clase
  • En el constructor
Intent(Context packageContext, Class<?> cls)
/*Actividad 2 es una actividad del paquete*/
...
    Intent i = new Intent(this, Actividad2.class);
    startActivity(i);
...
  • Usando métodos de la clase Intent para establecer el componente que queremos invocar
getComponent(...), getClass(...) getClassName(...).
  • Y para recuperar el nombre del componente
getComponent()
  • Ejemplo
...
	Intent i = new Intent();
	i.setClass(this,Actividad2.class);
	startActivity(i);
...
/*Otra manera de hacer lo mismo*/
	Intent i=new Intent();
	i.setComponent(new ComponentName(this,Actividad2.class));
	startActivity(i);
 
/*Lo mismo usando el nombre del java*/
...
	Intent i = new Intent();
	i.setClassName(this, "com.example.interaccionactivitys.Actividad2");
	startActivity(i);
...
Intent Implícito
  • En este caso creamos el intent pasando un nombre de accion.
  • El sistema buscará qué actividad puede realizar esa acción y la ejecutará.
  • En caso de haber más de una actividad que pueda realizar esa acción nos mostrará la lista para que la realicemos.
  • La forma de asociar a una Activity una acción es usando el elemento <action-filter> del fichero manifest
  • La accion la podemos pasar en el constructor del Intent.
  • Android tiene aplicaciones por defe

Intents con parámetros

  • Es muy posible que queramos pasar/recuperar datos entre actividades
  • Por ejemplo que una activity me pase usuario y contraseña para validar

Pasar valores a través de un Intent

  1. Una vez creado el Intent, creamos un objeto Bundle
  2. A este objeto le asignamos valores en la forma de parejas etiqueta-valor usando métodos del tipo putxxx
  3. asociamos el objeto Bundle al Intent con el método putExtras( Bundle ) y ya tenemos los valores preaparados para que sean pasados a la activity o componente que active el Intent.
//Primero defino el intent y le asocia una actividad que quiero que invoque.
 Intent intencion = new Intent();
 intencion.getClass(this,miclase.class);
 
//Defino el bundle para asignar parejas variable-valor
 Bundle datos = new Bundle();
 datos.putInt("edad",25);
 datos.putString("nombre","pedro");
 
//Asocio el bundle al intent
 intencion.putExtras(datos);
 
//Activo la activity
 startActivity(intencion);

Leer los datos que pasa el intent

  • Para leer los datos en la activity invocada con el intent, se hace de manera sencilla
  1. Creamos un objeto budle
  2. Lo instanciamos con el bundle que nos retorna el método getExtras del intent que lo ha activado (con el método getIntent()
  3. Lemos los valores con los métodos getXXX(etiqueta)
public class ClaseInvocadaConIntent  extends Activity {
....	
	@Override 
	protected void onCreate(Bundle estado){
 
		Bundle valores = getIntent().getExtras();
		int edad = valores.getInt("edad");
		String nombre = valores.getString("nombre");
                ......
	}
....

Devolver valores a una activity que me invocó

  • Ahora vamos a ver como es el proceso en el que la activity invocada retorna valores a la activity que la invocó

Archivo:ActivityRetornaValores.png

Situación
  • La activity A invoca a la activity B
  • La activity B retorna un valor a la activity A
Paso 1
La activity A llama a la Activity B

Para ello usamos el método

 startActivityForResult(Intnet i, int codigo);
  • En este caso pasamos un segundo parámetro que es un código que indentifica la invocación de la acción
  • Este código permitirá asegurarnos que retorno de esta activity y no de otra.
  • Supongamos que una activity pueda invocar a varias.
    • en el retorno de cualquiera de ellas si retorna valor, siempre iré al método onActivityResult(int resquest, int result , Intendt)
    • Analizando el parámetro request podemos ver de qué intent venimos (que será el mismo valor que le hayamos pasado en la invocación.
........
	public void clickActividad_B(View v){
		Intent i = new Intent(this,ActividadB.class);
		String nombre=((EditText)findViewById(R.id.TNombre)).getText().toString();
		String apellido=((EditText)findViewById(R.id.editText1)).getText().toString();
		Bundle datos = new Bundle();
		datos.putString("nombre",nombre);
		datos.putString("apellido",apellido );
		i.putExtras(datos);
		startActivityForResult(i,OK_ACTIVIDAD_2);
	}
 
	public void clickActividad_C(View v){
		Intent i = new Intent(this,ActividadB.class);
		String nombre=((EditText)findViewById(R.id.TNombre)).getText().toString();
		String apellido=((EditText)findViewById(R.id.editText1)).getText().toString();
		Bundle datos = new Bundle();
		datos.putString("nombre",nombre);
		datos.putString("apellido",apellido );
		i.putExtras(datos);
		startActivityForResult(i,OK_ACTIVIDAD_3);
	}
 
	@Override
	public void onActivityResult(int codAccion, int codDatos, Intent i){
.........
 
		if (codAccion==OK_ACTIVIDAD_2)
			Log.i("ActividadA","Vengo de actividad OK_2, Actividad B");
		if (codAccion==OK_ACTIVIDAD_3)
			Log.i("ActividadA","Vengo de actividad OK_3, Actividad C");
 
......
 
	}
}

Devolviendo resultados

  • Ahora queremos hacer un diseño como el siguiente

Intent2.png

  1. Realizamos los diseños
fichero manifest con dos activity
Dos ficheros java
dos ficheros de layout

Los ficheros java

    public void validarUsuario(View v){
    	Intent datosUsuario = new Intent();
    	EditText tNombre= (EditText) findViewById(R.id.Nombre);
    	EditText tApellido= (EditText) findViewById(R.id.Apellido);
 
    	//Obtenemos el valor de la caja de texto
 
    	//Utilizamos putExtra() para obtener los pares nombre/valor
    	datosUsuario.putExtra("nombre", tNombre.getText().toString());
    	datosUsuario.putExtra("apellido", tApellido.getText().toString());
 
    	//Utilizamos el método setData() para devover algunos valores
    	datosUsuario.setData(Uri.parse("Enviando valores"));
 
    	//Establecemos el resultado con OK
    	setResult(RESULT_OK,datosUsuario);
 
    	//Destruimos el objeto
    	finish();
 
 
    	//iniciamos actividad
    	datosUsuario.setClass(this, ValidacionDatos.class);
    	startActivityForResult(datosUsuario,1);
    }
 
public void onActivityResult (int codigoRespuesta, int codigoResultado, Intent datos){
	if (codigoRespuesta==1){
		if (codigoResultado == RESULT_OK){
			Toast.makeText(this, "no no se se", Toast.LENGTH_LONG);
		}
	}
 
}
public class ValidacionDatos extends Activity {
	public void onCreate(Bundle estadoActividad){
		super.onCreate(estadoActividad);
		setContentView(R.layout.activity_validacion_datos);
 
 
	//Obtener los datos pasados usand getStringExtra()
	Toast.makeText(this,getIntent().getStringExtra("nombre"),Toast.LENGTH_LONG).show();
 
	//Obtener los datos pasados usand getStringExtra()
	Toast.makeText(this,getIntent().getStringExtra("apellido"),Toast.LENGTH_LONG).show();
 
 
	//Obetener el objeto Bundle pasado
	//Bundle nose=getIntent().getExtras();
 
	//Obtener los datos pasados usand getStringExtra()
	//Toast.makeText(this,nose.getString("nombre"),Toast.LENGTH_LONG).show();
 
	//Obtener los datos pasados usand getStringExtra()
	//Toast.makeText(this,nose.getString("apellido"),Toast.LENGTH_LONG).show();
	}
 
	public void clickValidacion(View v) {
		Toast.makeText(this,"Valicación terminada",Toast.LENGTH_LONG).show();
		finish();
 
	}
}