dijous, 25 de juliol del 2013

Us d'intents per iniciar activitats



De Intents en tenim de dos tipus: explícits i implícits.

  • Cridar mètodes implícits sense retorn de resultat
 Cal declarar l'activitat al fitxer AndroidManifest.xml

        <activity
            android:name="com.lina.validar.ActivitatSegona"
            android:label="@string/title_activity_activitat_segona" >
        </activity>

Per obrir una nova activitat, que no retorna resultats a la primera (codi en la primera activitat)

Intent intencio= new Intent(getApplicationContext(), ActivitatSegona.class);

Per passar arguments entre activitats (codi en la primera activitat)

intencio.putExtra("NOM", nom);
startActivity(intencio);

Per recollir els arguments en la segona activitat, passats per la primera

String nom = getIntent().getStringExtra("NOM");
 
  • Cridar mètodes implícits amb retorn de resultat
Es declaren igual però es cridem amb

startActivityForResult(intencio, codi);

On codi pot ser qualsevol número superior a 0 i que serveix per identificar el intent.

Després l'activitat segona li retorna la informació a l'activitat primera amb

Intent intent = new Intent();
intent.putExtra( "tornar" , 1);
setResult( RESULT_OK ,intent);
finish();

I l'activitat primera per recollir el resultat:

@Override
protected void onActivityResult ( int requestCode, int resultCode, Intent data){
super .onActivityResult(requestCode, resultCode, data);
if (requestCode == 10 && resultCode == RESULT_OK ){
int valorObtenido = data.getIntExtra("devolver", 0);
//el nostre codi
       }
}

  • Cridar mètodes explícits
Per exemple:

startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:933333333")));

La classe Intent defineix una sèrie d'accions predeterminades ( es poden consultar http://developer.android.com/guide/components/intents-filters.html). En aquest cas cridem a l'acció ACTION_CALL que inicia una trucada de telèfon

Cap comentari:

Publica un comentari a l'entrada