Usuario:ManuelRomero/Android/Interfaz/intent
De WikiEducator
< Usuario:ManuelRomero | Android | Interfaz
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()); } } } }
- La activity invocada
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