Android Base: Un esempio di Intent Esplicito

In un Intent Esplicito specifichiamo l’Activity target invocandola direttamente. Tale gestione è utile nel caso si vogliano gestire messaggi all’interno delle proprie applicazioni.
A differenza delle Intent Implicite in cui dichiariamo il tipo di Intent che vogliamo sia gestita e deleghiamo alla piattafroma Android il compito di trovare l’Activity in grado di operare sui dati di cui abbiamo bisogno, ora definiamo a tempo di compilazione chi sarà ad “occuparsi dei nostri dati”.
Chiarirò tutto con un semplice esempio.
Supponiamo di avere due Activity:
·         InvokeActivity
·         InvokedActivity
Che, ovviamente, rappresentano l’Activity chiamante e quella chiamata.
Partiamo dalla definizione della nostra applicazione col seguente AndroidManifest.xml :
      package=”it.delfio.android.activity.intents” android:versionCode=”1″
      android:versionName=”1.0″>
   
       
                  android:label=”@string/app_name”>
           
               
               
           
       
        
        
   
   
L’InvokeActivity contiene un bottone “Invoca Activity” (da inserire nel file xml di layout: main.xml) che, una volta cliccato, permette di invocare l’Activity target.
    android:orientation=”vertical”
    android:layout_width=”fill_parent” android:layout_height=”wrap_content”>
        
           android:layout_width=”fill_parent” android:layout_height=”wrap_content”
           android:text=”@string/testoInvokeActivity” android:layout_weight=”1″/>
        
              android:id=”@+id/invokeButton” android:layout_gravity=”center_horizontal”
              android:layout_width=”wrap_content” android:layout_height=”wrap_content”/>
Di seguito il codice dell’InvokeActivity con in evidenza la gestione dell’evento onClick lanciato alla pressione del bottone con id invokeButton                     
package it.delfio.android.activity.intents;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class InvokeActivity extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);
   Button invokeButton = (Button)findViewById(R.id.invokebutton);
   invokeButton.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) {
        Intent explicitIntent = new Intent(InvokeActivity.this,InvokedActivity.class);
        startActivity(explicitIntent);
     }
   });
  }
}
 
Recuperiamo il pulsante che permetterà di lanciare il nostro Intent attraverso l’istruzione:
                     (Button)findViewById(R.id.invokebutton)
Di seguito, attraverso il costruttore :
                  Intent(InvokeActivity.this,InvokedActivity.class)
Possiamo specificare l’Activity sorgente e quella destinazione della chiamata, che verrà fatta sempre attraverso la chiamata:
                 startActivity(explicitIntent);
Definiamo nel file /res/values/string.xml tutte le stringhe che utilizzaremo nell’applicazione:
    Activity che lancia una Intent Esplicita
    Prova Intent Esplicita
Invoca Activity  
Activity chiamata esplicitamente. Non abbiamo configurato nessun Intent Filter, quindi per invocare la seconda Activity bisogna chiamarla esplicitamente.
Alla pressione del bottone, come accennato in precedenza viene lanciata l’Intent a cui risponderà la nostra seconda InvokedActivity, il cui layout è definito dal file:
    android:orientation=”vertical”
    android:layout_width=”fill_parent” android:layout_height=”wrap_content”>
   
      android:layout_width=”fill_parent” android:layout_height=”wrap_content” >
   
Che contiene un unico campo testo da visualizzare appena viene invocata e visualizzata attraverso il semplice codice:
package it.delfio.android.activity.intents;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class InvokedActivity extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.invokedactivity);
  }
}
Infine, provando a lanciare la nostra semplice applicazione sull’emulatore, dovremmo ottenere:
 
 

RSS AngularJob

ddelfio Written by: