Usuario:ManuelRomero/Android/Interfaz/intent

De WikiEducator
< Usuario:ManuelRomero‎ | Android‎ | Interfaz
Revisión a fecha de 02:51 30 may 2013; ManuelRomero (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar



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