Visita GenyMotion (Ottieni un emulatore)
Installazione Android Studio
Creare la prima App (Continuazione)
Nella cartella res/layout modificare il file activity_main.xml.
Aggiungere l'attributo android:onClick all'elemento <Button>.
res/layout/activity_my.xml
Il valore "sendMessage" dell'attributo android:onClick é il nome di un metodo contenuto nell'activity che il sistema operativo richiama quando l'utente tocca il pulsante.
Nella cartella del progetto, aprire il file MyActivity.java.
All'interno della classe MyActivity aggiungere il metodo sendMessage():
MyActivity.java
Affinchè il sistema riconosca questo metodo come quello specificato nel valore dell'attributo android:onClick, la firma (la dichiarazione) deve essere esattamente identica a quella mostrata. Cioè il metodo deve:
essere pubblico
ritornare void
avere un solo parametro (la vista in cui è stato fatto clic sul pulsante)
Il compito di questo metodo consiste nel leggere il contenuto della casella di testo e consegnarlo ad un'altra activity.
Nel file MyActivity.java all'interno del metodo sendMessage() creare un Intent per avviare un'activity denominata DisplayMessageActivity contenente le seguenti istruzioni:
/MyActivity.java
Un Intent é un oggetto che fornisce il collegamento tra componenti separati (ad esempio due activity). Un Intent può essere usato per molti scopi. In genere vengono usati per avviare un0altra activity.
Nota: Il riferimento a DisplayMessageActivity genera un errore perché la classe non esiste. Per il momento, ignorare l'errore.
Il costruttore usato richiede due parametri:
Un Context come primo parametro (perché la classe Activity è una sotto-classe di Context)
La Classe del componente a cui il sistema operativo deve consegnare l'Intent (in questo caso, l'activity che dovrebbe essere avviata)
L'ambiente di sviluppo, Android Studio, suggerisce di importare la classe Intent.
Nella sezione di intestazione del file importare la classe Intent:
/MyActivity.java
Suggerimento: premere Alt + Invio per importare le classi mancanti.
All'interno del metodo sendMessage() usare findViewById() per ottenere un riferimento all'elemento EditText.
/MyActivity.java
Nella sezione import, del file, importare la classe EditText.
Assegnare il testo alla variabile locale message, ed usare il metodo putExtra() per aggiungere il testo all'intent.
/MyActivity.java
Un Intent porta i dati nella forma di una coppia Chiave-Valore chiamata extra.
Il metodo putExtra() riceve la chiave come primo parametro e il valore come secondo parametro.
Nella sezione proprietà della classe MyActivity inserire la definizione della costante EXTRA_MESSAGE:
/MyActivity.java
Affinché la nuova activity possa interrogare i dati extra si deve definire la chiave usando una costante pubblica.
Per convenzione le chiavi vengono definite anteponendo il nome del package dell'applicazione come prefisso.
In questo modo si assicura che il nome di una chiave sia univoco.
Nel metodo sendMessage(), per completare l'intent, richiamare il metodo startActivity()
passando l'oggetto Intent.
Il metodo completo sendMessage() richiamato dal pulsante è il seguente:
/MyActivity.java
Il sistema operativo riceve questa chiamata ed avvia un'istanza dell'Activity specificata dall'Intent.
A questo punto si deve creare la classe DisplayMessageActivity.
Tutte le sottoclassi di Activity devono ridefinire il metodo onCreate(). Questo è il metodo dell'activity, a cui il sistema operativo consegna il messaggio dell'Intent, e che quindi provvede ad elaborarlo. Inoltre, il metodo onCreate() deve definire il layout con il metodo setContentView(). Questo metodo si occupa di impostare i componenti dell'activity.
Quando si crea una nuova activity, l'ambiente di sviluppo fornisce un prototipo del metodo onCreate().
Nella casella del progetto, Clic destro sul nome del package. Dal menu contestuale selezionare New > Activity > Blank Activity.
Completare i dettagli dell'activity:
Premere il pulsante Finish.
Aprire il file DisplayMessageActivity.java.
La classe già contiene un'implementazione del metodo onCreate(). Questo metodo verrà completato in un momento successivo. Contiene anche l'implementazione del metodo onOptionsItemSelected().
Cancellare il metodo onCreateOptionsMenu().
A questo punto l'app può essere eseguita per verificare la preseza di errori, ma non succede niente. Cliccando il pulsante Invia si apre la seconda activity, che usa il layout di default "Hello world" fornito dal modello.
Creare un nuovo file denominato DisplayMessageActivity.java nella cartella src/ del progetto, accanto al file MyActivity.java.
Inserire il seguente codice:
Nel file strings.xml aggiungere il titolo dell'activity:
Nel file manifest, AndroidManifest.xml, all'interno dell'elemento Application, aggiungere l'elemento <activity> per la classe DisplayMessageActivity:
L'attributo android:parentActivityName dichiara il nome del padre dell'activity. Il sistema operativo usa questo valore per implementare il comportamento di default per la navigazione.
Ogni Activity è richiamata da un Intent, indipendentemente da come l'utente abbia navigato. Per conoscere quale Intent ha avviato l'activity si deve richiamare getIntent() e accedere ai dati contenuti nell'intent.
Modificare il file DisplayMessageActivity.java.
Nel metodo onCreate() eliminare la seguente linea:
Leggere l'intent ed assegnare il valore ad una variabile locale:
Nella sezione superiore del file importare la classe Intent
Estrarre il messaggio consegnato da MyActivity con il metodo getStringExtra()
.Nel metodo onCreate() creare un oggetto TextView.
Fissare la dimensione del carattere e del messaggio:
Aggiungere un elemento TextView come vista radice del layout dell'activity€passandolo a setContentView().
Importare la classe TextView.
Il metodo completo onCreate() per la classe DisplayMessageActivity:
Eseguire l'app. Quando si apre, scrivere un messaggio, premere il pulsante Invia, il messaggio viene mostrato nella seconda activity.