Guida [GUIDA] Android - Iniziare una nuova attività - Parte 1 / 2

Stato
Discussione chiusa ad ulteriori risposte.

Max Fridman

Community Manager
Amministratore
8 Agosto 2010
7,147
692
6,958
3,233
Ultima modifica da un moderatore:
xdgqdpgkq_54c359pbdm_b.png.pagespeed.ic.fRlz4l1mFG.png

resource-tutorial.png
INTRODUZIONE

Alla fine della precedente lezione abbiamo creato due attività , una textbox e un bottone , ora dovremo mettere in correlazione queste due attività facendo si che quando premiamo il "bottone" verrà inizializzata una nuova attività.

IL BOTTONE INVIO

Per fare rispondere il bottone , dobbiamo aprire il file activity_main.xml e aggiungere l'attributo android:eek:nClick all'elemento <Button>

Codice:
[COLOR=#000088][FONT=courier new]<Button[/FONT][/COLOR]
[COLOR=#882288]android:layout_width[/COLOR][COLOR=#666600]=[/COLOR][COLOR=#008800]"wrap_content"[/COLOR][COLOR=#000000]
    [/COLOR][COLOR=#882288]android:layout_height[/COLOR][COLOR=#666600]=[/COLOR][COLOR=#008800]"wrap_content"[/COLOR][COLOR=#000000]
    [/COLOR][COLOR=#882288]android:text[/COLOR][COLOR=#666600]=[/COLOR][COLOR=#008800]"@string/button_send"[/COLOR][COLOR=#000000]
[/COLOR][COLOR=#882288][FONT=courier new]android:onClick[/FONT][/COLOR][COLOR=#666600][FONT=courier new]=[/FONT][/COLOR][COLOR=#008800][FONT=courier new]"sendMessage"[/FONT][/COLOR][COLOR=#000088][FONT=courier new]/>[/FONT][/COLOR]

l'attributo di android:eek:nClick è "sendMessage" è il nome del metodo che il sistema chiama quando premiamo il bottone.

Apriamo la classe Main Activity (che si trova nella directory /src del progetto) e aggiungiamo il metodo corrispondente

Codice:
[COLOR=#880000][FONT=courier new]/** Called when the user clicks the Send button */[/FONT][/COLOR]
[COLOR=#000088]public[/COLOR][COLOR=#000088]void[/COLOR][COLOR=#000000] sendMessage[/COLOR][COLOR=#666600]([/COLOR][COLOR=#660066]View[/COLOR][COLOR=#000000] view[/COLOR][COLOR=#666600])[/COLOR][COLOR=#666600]{[/COLOR][COLOR=#000000]
    [/COLOR][COLOR=#880000]// Do something in response to button[/COLOR][COLOR=#000000]
[/COLOR][COLOR=#666600][FONT=courier new]}[/FONT][/COLOR]

Questo richiede di importare la classe View

Codice:
[COLOR=#000088][FONT=courier new]import[/FONT][/COLOR][COLOR=#000000][FONT=courier new] android[/FONT][/COLOR][COLOR=#666600][FONT=courier new].[/FONT][/COLOR][COLOR=#000000][FONT=courier new]view[/FONT][/COLOR][COLOR=#666600][FONT=courier new].[/FONT][/COLOR][COLOR=#660066][FONT=courier new]View[/FONT][/COLOR][COLOR=#666600][FONT=courier new];[/FONT][/COLOR]

Suggerimento : Su Eclipse premi CLTR + Shift + O per importare le classi mancanti (su Mac Cmd + Shift + O)

Il metodo dovrà essere settato come riportato nella guida , poiché deve avere dei requisiti particolari per funzionare


  • Essere pubblico
  • Avere un valore di ritorno vuoto
  • Avere "View" come solo parametro di ritorno

Ora compileremo il metodo , per leggere il contenuto all'interno del campo di testo.

CREARE UN INTENT

Un "Intent" è un oggetto che mette in relazione due componenti separati , in questo caso due attività. E definisce la funzione di "fare qualcosa" , in questo caso iniziare una nuova attività.

Dentro il campo sendMessage() , create un Intent per iniziare un'attività chiamato DisplayMessageActivity:

Codice:
[COLOR=#660066][FONT=courier new]Intent[/FONT][/COLOR][COLOR=#000000][FONT=courier new] intent [/FONT][/COLOR][COLOR=#666600][FONT=courier new]=[/FONT][/COLOR][COLOR=#000088][FONT=courier new]new[/FONT][/COLOR][COLOR=#660066][FONT=courier new]Intent[/FONT][/COLOR][COLOR=#666600][FONT=courier new]([/FONT][/COLOR][COLOR=#000088][FONT=courier new]this[/FONT][/COLOR][COLOR=#666600][FONT=courier new],[/FONT][/COLOR][COLOR=#660066][FONT=courier new]DisplayMessageActivity[/FONT][/COLOR][COLOR=#666600][FONT=courier new].[/FONT][/COLOR][COLOR=#000088][FONT=courier new]class[/FONT][/COLOR][COLOR=#666600][FONT=courier new]);[/FONT][/COLOR]

Intent è formato da

  • Context ovvero il this , che è lasciato vuoto poiché l'Attività è una sottoclasse di Context
  • Class ovvero il .class che è l'azione che l'Intent descrive , e che venga inziata

Vi verrà mostrato un errore , perché la classe DisplayMessageActivity.class non esiste , ignoratelo , la creeremo più avanti.

Un Intent però non può definire l'inizio di un'attività può però inviare dei dati per fare si che questa azione si compia.

Quindi dentro il metodo sendMessage () , usate findViewByID () per trovare l'elemento Edit Text e aggiungete questo testo all'elemento.

Codice:
[COLOR=#660066][FONT=courier new]Intent[/FONT][/COLOR][COLOR=#000000][FONT=courier new] intent [/FONT][/COLOR][COLOR=#666600][FONT=courier new]=[/FONT][/COLOR][COLOR=#000088][FONT=courier new]new[/FONT][/COLOR][COLOR=#660066][FONT=courier new]Intent[/FONT][/COLOR][COLOR=#666600][FONT=courier new]([/FONT][/COLOR][COLOR=#000088][FONT=courier new]this[/FONT][/COLOR][COLOR=#666600][FONT=courier new],[/FONT][/COLOR][COLOR=#660066][FONT=courier new]DisplayMessageActivity[/FONT][/COLOR][COLOR=#666600][FONT=courier new].[/FONT][/COLOR][COLOR=#000088][FONT=courier new]class[/FONT][/COLOR][COLOR=#666600][FONT=courier new]);[/FONT][/COLOR]
[COLOR=#660066]EditText[/COLOR][COLOR=#000000] editText [/COLOR][COLOR=#666600]=[/COLOR][COLOR=#666600]([/COLOR][COLOR=#660066]EditText[/COLOR][COLOR=#666600])[/COLOR][COLOR=#000000] findViewById[/COLOR][COLOR=#666600]([/COLOR][COLOR=#000000]R[/COLOR][COLOR=#666600].[/COLOR][COLOR=#000000]id[/COLOR][COLOR=#666600].[/COLOR][COLOR=#000000]edit_message[/COLOR][COLOR=#666600]);[/COLOR][COLOR=#000000]
[/COLOR][COLOR=#660066]String[/COLOR][COLOR=#000000] message [/COLOR][COLOR=#666600]=[/COLOR][COLOR=#000000] editText[/COLOR][COLOR=#666600].[/COLOR][COLOR=#000000]getText[/COLOR][COLOR=#666600]().[/COLOR][COLOR=#000000]toString[/COLOR][COLOR=#666600]();[/COLOR][COLOR=#000000]
[/COLOR][COLOR=#000000][FONT=courier new]intent[/FONT][/COLOR][COLOR=#666600][FONT=courier new].[/FONT][/COLOR][COLOR=#000000][FONT=courier new]putExtra[/FONT][/COLOR][COLOR=#666600][FONT=courier new]([/FONT][/COLOR][COLOR=#000000][FONT=courier new]EXTRA_MESSAGE[/FONT][/COLOR][COLOR=#666600][FONT=courier new],[/FONT][/COLOR][COLOR=#000000][FONT=courier new] message[/FONT][/COLOR][COLOR=#666600][FONT=courier new]);[/FONT][/COLOR]

Inserite la definizione di EXTRA_MESSAGE all'inizio pagina della classe MainActivity

Codice:
[COLOR=#000088][FONT=courier new]public[/FONT][/COLOR][COLOR=#000088][FONT=courier new]class[/FONT][/COLOR][COLOR=#660066][FONT=courier new]MainActivity[/FONT][/COLOR][COLOR=#000088][FONT=courier new]extends[/FONT][/COLOR][COLOR=#660066][FONT=courier new]Activity[/FONT][/COLOR][COLOR=#666600][FONT=courier new]{[/FONT][/COLOR]
[COLOR=#000088]public[/COLOR][COLOR=#000088]final[/COLOR][COLOR=#000088]static[/COLOR][COLOR=#660066]String[/COLOR][COLOR=#000000] EXTRA_MESSAGE [/COLOR][COLOR=#666600]=[/COLOR][COLOR=#008800]"com.example.myfirstapp.MESSAGE"[/COLOR][COLOR=#666600];[/COLOR][COLOR=#000000]
    [/COLOR][COLOR=#666600]...[/COLOR][COLOR=#000000]
[/COLOR][COLOR=#666600][FONT=courier new]}[/FONT][/COLOR]

Importate le funzioni android.content.Intent e android.widget.EditText
 
Stato
Discussione chiusa ad ulteriori risposte.