Diferencia entre revisiones de «Usuario:ManuelRomero/Android/Interfaz/intent»
De WikiEducator
< Usuario:ManuelRomero | Android | Interfaz
(Página creada con '{{:Usuario:ManuelRomero/Android/Interfaz/nav}} <br>') |
|||
Línea 1: | Línea 1: | ||
{{:Usuario:ManuelRomero/Android/Interfaz/nav}} | {{:Usuario:ManuelRomero/Android/Interfaz/nav}} | ||
<br> | <br> | ||
+ | ===Intent=== | ||
+ | Son objetos que nos va a permitir invocar a acciones o activitys para que se ejectuen | ||
+ | *De esta forma vamos a poder hacer nuestra aplicación como una serie de invocaciones de activity a traves de intems | ||
+ | *estas acciones pueden estar en el sistema, por lo que en este caso el Intent invocaría a una acción del api | ||
+ | *Ejemplo llamar por teléfono | ||
+ | usamos '''''intent.ACTION_CALL''''' | ||
+ | Intent accion = new Intent(Intent.ACTION_CALL); | ||
+ | accion.setData(Uri.parse("tel+600006665"); | ||
+ | startActivity(accion); | ||
+ | ===Invocar de una activity a otra=== | ||
+ | *Creamos una activity con un botón | ||
+ | *Cuando lo presionemos que se abra otra activity | ||
+ | *El método al boton asociado suponemos clickUserData(View ) | ||
+ | <source lang=java> | ||
+ | public void clickUserData(View v){ | ||
+ | |||
+ | //Creo un intent con una activity que voy a invocar | ||
+ | Intent datosUsuario = new Intent(); | ||
+ | Log.w("DEBUG","click"); | ||
+ | |||
+ | //Establezco la activity en el intent | ||
+ | datosUsuario.setClass(getApplicationContext(), ValidarDatos.class); | ||
+ | |||
+ | startActivity(datosUsuario); | ||
+ | } | ||
+ | |||
+ | </source> | ||
+ | ===Intent que retorna valores=== | ||
+ | *Vamos a ver como un intent retorna valores a la activity que lo invoca | ||
+ | *Y como esta activity puede recuperarlos | ||
+ | ;La activity que invoca | ||
+ | <source lang=java> | ||
+ | package com.example.probandointent; | ||
+ | |||
+ | import android.app.Activity; | ||
+ | import android.content.Intent; | ||
+ | import android.os.Bundle; | ||
+ | import android.util.Log; | ||
+ | import android.view.View; | ||
+ | import android.widget.TextView; | ||
+ | |||
+ | public class SolicitudDatos extends Activity { | ||
+ | |||
+ | |||
+ | @Override | ||
+ | protected void onCreate(Bundle savedInstanceState) { | ||
+ | super.onCreate(savedInstanceState); | ||
+ | setContentView(R.layout.activity_main); | ||
+ | } | ||
+ | |||
+ | public void clickUserData(View v){ | ||
+ | |||
+ | //Creo un intent con una activity que voy a invocar | ||
+ | Intent datosUsuario = new Intent(); | ||
+ | Log.w("DEBUG","click"); | ||
+ | |||
+ | //Establezco la activity en el intent | ||
+ | datosUsuario.setClass(getApplicationContext(), ValidarDatos.class); | ||
+ | datosUsuario.putExtra("nombre",""); | ||
+ | datosUsuario.putExtra("apellido",""); | ||
+ | |||
+ | startActivityForResult(datosUsuario,1); | ||
+ | } | ||
+ | @Override | ||
+ | protected void onActivityResult(int requestCode, int resultCode, Intent data) { | ||
+ | Log.w("DEBUG","Acabo de terminar"); | ||
+ | if ( requestCode == 1 ){ | ||
+ | if ( resultCode == Activity.RESULT_OK ){ | ||
+ | Log.w("DEBUG","Voy a leer los datos"); | ||
+ | TextView tNombre= (TextView) findViewById(R.id.txtNombre); | ||
+ | TextView tApellido= (TextView) findViewById(R.id.txtApellido); | ||
+ | Log.w("DEBUG","Ahora lo asigno a los txt"); | ||
+ | tNombre.setText(data.getExtras().get("nombre").toString()); | ||
+ | tApellido.setText(data.getExtras().get("apellido").toString()); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | } | ||
+ | </sourece> | ||
+ | ;La activity invocada | ||
+ | <source lang=java> | ||
+ | package com.example.probandointent; | ||
+ | |||
+ | import android.app.Activity; | ||
+ | import android.content.Intent; | ||
+ | import android.os.Bundle; | ||
+ | import android.util.Log; | ||
+ | import android.view.View; | ||
+ | import android.widget.EditText; | ||
+ | import android.widget.Toast; | ||
+ | |||
+ | public class ValidarDatos extends Activity { | ||
+ | @Override | ||
+ | protected void onCreate(Bundle savedInstanceState) { | ||
+ | super.onCreate(savedInstanceState); | ||
+ | setContentView(R.layout.activity_main_validar); | ||
+ | } | ||
+ | public void clickUserAceptar(View v){ | ||
+ | //Creo un intent para pasar valores a la activity que me invocó | ||
+ | Log.w("DEBUG","Antes de crear intent de retorno"); | ||
+ | Intent i = new Intent( this, ValidarDatos.class ); | ||
+ | Log.w("DEBUG","Creado intent de retorno"); | ||
+ | |||
+ | //Agrego valores al activity en parejas | ||
+ | EditText n = (EditText)findViewById(R.id.editNombre); | ||
+ | EditText a = (EditText)findViewById(R.id.editApellido); | ||
+ | Log.w("DEBUG","Nombre "+n.getText().toString()); | ||
+ | Log.w("DEBUG","Apellido "+a.getText().toString()); | ||
+ | //Toast.makeText(getApplicationContext(),"Nombre "+n.getText().toString(),Toast.LENGTH_LONG).show(); | ||
+ | |||
+ | i.putExtra("nombre",n.getText().toString()) ; | ||
+ | i.putExtra("apellido",a.getText().toString()) ; | ||
+ | Log.w("DEBUG","Asignados valores de retorno"); | ||
+ | |||
+ | //Establezco que se han asignado correctaemente los valores (la bandera) | ||
+ | setResult( Activity.RESULT_OK, i ); | ||
+ | Log.w("DEBUG","Establecido el retorno ahora finiquito"); | ||
+ | |||
+ | //Finalizo mi actividad | ||
+ | finish(); | ||
+ | |||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | *No olvidar insertar la nueva activity en el ''manifest'' |
Revisión de 02:50 30 may 2013
Intent
Son objetos que nos va a permitir invocar a acciones o activitys para que se ejectuen
- De esta forma vamos a poder hacer nuestra aplicación como una serie de invocaciones de activity a traves de intems
- estas acciones pueden estar en el sistema, por lo que en este caso el Intent invocaría a una acción del api
- Ejemplo llamar por teléfono
usamos intent.ACTION_CALL
Intent accion = new Intent(Intent.ACTION_CALL); accion.setData(Uri.parse("tel+600006665"); startActivity(accion);
Invocar de una activity a otra
- Creamos una activity con un botón
- Cuando lo presionemos que se abra otra activity
- El método al boton asociado suponemos clickUserData(View )
public void clickUserData(View v){ //Creo un intent con una activity que voy a invocar Intent datosUsuario = new Intent(); Log.w("DEBUG","click"); //Establezco la activity en el intent datosUsuario.setClass(getApplicationContext(), ValidarDatos.class); startActivity(datosUsuario); }
Intent que retorna valores
- Vamos a ver como un intent retorna valores a la activity que lo invoca
- Y como esta activity puede recuperarlos
- La activity que invoca
package com.example.probandointent; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.TextView; public class SolicitudDatos extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void clickUserData(View v){ //Creo un intent con una activity que voy a invocar Intent datosUsuario = new Intent(); Log.w("DEBUG","click"); //Establezco la activity en el intent datosUsuario.setClass(getApplicationContext(), ValidarDatos.class); datosUsuario.putExtra("nombre",""); datosUsuario.putExtra("apellido",""); startActivityForResult(datosUsuario,1); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { Log.w("DEBUG","Acabo de terminar"); if ( requestCode == 1 ){ if ( resultCode == Activity.RESULT_OK ){ Log.w("DEBUG","Voy a leer los datos"); TextView tNombre= (TextView) findViewById(R.id.txtNombre); TextView tApellido= (TextView) findViewById(R.id.txtApellido); Log.w("DEBUG","Ahora lo asigno a los txt"); tNombre.setText(data.getExtras().get("nombre").toString()); tApellido.setText(data.getExtras().get("apellido").toString()); } } } } </sourece> ;La activity invocada <source lang=java> package com.example.probandointent; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.EditText; import android.widget.Toast; public class ValidarDatos extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_validar); } public void clickUserAceptar(View v){ //Creo un intent para pasar valores a la activity que me invocó Log.w("DEBUG","Antes de crear intent de retorno"); Intent i = new Intent( this, ValidarDatos.class ); Log.w("DEBUG","Creado intent de retorno"); //Agrego valores al activity en parejas EditText n = (EditText)findViewById(R.id.editNombre); EditText a = (EditText)findViewById(R.id.editApellido); Log.w("DEBUG","Nombre "+n.getText().toString()); Log.w("DEBUG","Apellido "+a.getText().toString()); //Toast.makeText(getApplicationContext(),"Nombre "+n.getText().toString(),Toast.LENGTH_LONG).show(); i.putExtra("nombre",n.getText().toString()) ; i.putExtra("apellido",a.getText().toString()) ; Log.w("DEBUG","Asignados valores de retorno"); //Establezco que se han asignado correctaemente los valores (la bandera) setResult( Activity.RESULT_OK, i ); Log.w("DEBUG","Establecido el retorno ahora finiquito"); //Finalizo mi actividad finish(); } }
- No olvidar insertar la nueva activity en el manifest