Messaggi in popup con Toast
Vedremo come far sì che la nostra applicazioni, mostri dei semplici e rapidi messaggi informativi all'utente, che scompaiono dopo un certo numero di secondi.
Spesso in fase di sviluppo si ha la necessità di visualizzare una serie di messaggi, posti in diversi punti del nostro codice alla scopo di controllare il valore di alcune variabili o semplicemente il flusso del programma in seguito a particolare situazioni che ricrei per testare l'applicazione.
Abbiamo già visto in un precedente tutorial come tu possa usare:
Log.d("ETICHETTA", "Msg")
Vediamo ora una classe utilizzata per mostrare dei semplici messaggi di avvertimento all'utente della mia applicazione, che spesso è comodo inserire in fase di testing per verificare il corretto funzionamento di bottoni o il passaggio di parametri tra una pagina e l'altra, la segnalazione della fine di un'azione fatta in background etc.
Cosa imparerai
- Imparerai a riconoscere e il significato della classe Toast e del metodo makeText() e show()
- Imparerai a visualizzare dei messaggi di testo in sovraimpressione per qualche istante.
STEP1: La classe "Toast" per visualizzare messaggi in sovraimpressione
La classe in questione si chiama: Toast (il che la rende facilmente riconoscibile) e lo steso nome ci permette di capire cosa produce: così come il Toast viene "sputato" fuori dal tostapane alla fine della cottura, anche qui, noi possiamo sputare fuori un messaggio che verrà visualizzato per alcuni istanti sullo schermo, per poi sparire.
La forma più usata prevede di impostare i parametri durata e testo del messaggio, senza indicazioni sulla posizione in cui verrà visualizzato, che tipicamente è in basso al centro dello schermo.
Il metodo della classe che ci permette di fare tutto ciò è: makeText()
Toast.makeText(getApplicationContext(), MESSAGGIO , DURATA).show();
dove getApplicationContext() è un valore predefinito che rappresenta o l'attuale Activity o in generale l'applicazione e che dovrai sempre inserire.
- MESSAGGIO: sarà evidentemente il testo che vogliamo mostrare all'utente e che potrà essere prelevato da un controllo della mia Activity oppure ricreato all'interno del codice.
- DURATA: dovrà essere espressa con un valore intero e tipicamente si usando delle costanti predefinite nella classe.
NB: Uno dei tipici errori che si commettono è dimenticare la chiamata al metodo show(), alla fine. Senza di questo nessun messaggio verrà mai visualizzato.
In pratica è come se il mio toast rimanesse dentro al tostapane, con il rischio di bruciarsi per sempre.
SPEP 2: Che durata impostare per la visualizzazione?
Per la durata, ci possiamo servire di costanti predefinite in Android, in particolare definite all'interno della classe stessa, quindi con la notazione NOMECLASSE.Costante
Toast.makeText(getApplicationContext(),"Prova messaggio", Toast.LENGTH_SHORT).show();
Così facendo l'utente visualizzerà un breve messaggio con la scritta "Prova messaggio".
Altri valori di durata che possiamo usare sono:
- Toast.LENGTH_SHORT
- Toast.LENGTH_LONG
STEP 3: Cambiare la posizione di visualizzazione
Come dicevo, la posizione in cui questo breve messaggio che scompare, verrà visualizzato, è nella parte inferiore della pagina. E se volessi cambiarne la posizione? E' necessario utilizzare una serie di metodi della classe appunto Toast, tra cui setGravity()
mioToast.setGravity(Gravity, posx, posy);
dove Gravity è una costante che può assumere i due valori:
- Gravity.TOP : visualizzato nella parte alta della pagina
- Gravity.LEFT : visualizzato alla sinistra della pagina
mentre posx e posx, saranno due valori numeri che rappresentano la posizione in corrispondenza all'asse x e y.
CONCLUSIONE
Riprendendo il codice visto per gestire il click su di un elemento di un controllo ListView, vediamo come far apparire un messaggio che mostri il contenuto della riga appena cliccata dall'utente, valore che sappiamo recuperare (vedi il tutorial "ListView gestire il tocco su una riga") con il metodo getItemAtPosition().
Pertanto possiamo scrivere:
mylist.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adattatore, final View componente, int pos, long id){ // recupero il titolo memorizzato nella riga tramite l'ArrayAdapter final String titoloRiga = (String) adattatore.getItemAtPosition(pos); // mostro il titolo della riga per pochi istanti Toast.makeText(getApplicationContext(), titoloRiga , Toast.LENGTH_SHORT).show(); } });
2024-12-21 Tipo/Autore: Davide Copelli {ing} Pubblicato da: CorsoAndroid.it