Diferencia entre revisiones de «Usuario:ManuelRomero/Android/Intents»
De WikiEducator
(→Intent Explícito o implicito) |
(→Usando un Intent) |
||
Línea 28: | Línea 28: | ||
==Usando un Intent== | ==Usando un Intent== | ||
*Un intent necesita información para saber qué aplicación tiene que lanzar | *Un intent necesita información para saber qué aplicación tiene que lanzar | ||
− | *Esta información la podemos pasar de diferente manera | + | *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 : |
− | #''''' | + | #'''''component''''', es el componente de la aplicación que queremos que se ejecute. |
− | #'''''action''''' | + | #'''''action''''', indica la acción asociada al Intent. con ella trataremos de encontrar los componetes que llevan a caba esa acción. |
− | #'''''data''''' | + | #'''''data''''', son los datos necesarios para una determinada accion. |
− | #'''''category''''' forma de agrupar actividades que detallan conciones que pueden hacer | + | #'''''category''''', forma de agrupar actividades que detallan conciones que pueden hacer |
− | #'''''extra''''' | + | #'''''extra''''', permite dar valores a un objeto Bundle en formato etiqueta-valor; Con ello podremos pasar valores al componentes que invoquemos. |
− | #'''''type''''' | + | #'''''type''''', especifica de forma explícita el tipo de datos del intent. |
*Vamos a ver a continuación como se puede usar un Intent | *Vamos a ver a continuación como se puede usar un Intent | ||
− | ===Intent Explícito o | + | ===Intent Explícito o Implícito=== |
;Intent explícito | ;Intent explícito | ||
*Un intent es explícito cuando de forma explícita detallamos el componente que queremos lanzar. | *Un intent es explícito cuando de forma explícita detallamos el componente que queremos lanzar. | ||
Línea 75: | Línea 75: | ||
</source> | </source> | ||
;Intent Implícito | ;Intent Implícito | ||
− | *En este caso creamos el intent pasando un nombre de accion | + | *En este caso creamos el intent pasando un nombre de accion. |
− | *El sistema buscará qué actividad puede realizar esa acción y la ejecutará | + | *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 | + | *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 | + | *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. | *La accion la podemos pasar en el constructor del Intent. | ||
− | *Android tiene aplicaciones por | + | *Android tiene aplicaciones por defe |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
=Intents con parámetros= | =Intents con parámetros= |
Revisión de 09:51 10 ene 2014
Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos. Ver página de charlas. |
#Se han detectado puntos incompletos en el contendio de este tema
En breve se actualizará, de momento no se recomienda su estudo . |
Intents
- Referencia
http://developer.android.com/reference/android/content/Intent.html
- Definición de la página oficial
- 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.
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 :
- component, es el componente de la aplicación que queremos que se ejecute.
- action, indica la acción asociada al Intent. con ella trataremos de encontrar los componetes que llevan a caba esa acción.
- data, son los datos necesarios para una determinada accion.
- category, forma de agrupar actividades que detallan conciones que pueden hacer
- extra, permite dar valores a un objeto Bundle en formato etiqueta-valor; Con ello podremos pasar valores al componentes que invoquemos.
- 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
Devolviendo resultados
- Ahora queremos hacer un diseño como el siguiente
- 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(); } }