Passa ai contenuti principali

Android Studio - Ripristino dell'Activity

In questo articolo vedremo come poter ripristinare l'Activity a seguito di un cambiamento di configurazione (come l'orientamento dello schermo, la disponibilità della tastiera e quando l'utente attiva la modalità multi-finestra).

Maggiori informazioni si possono trovare a questo indirizzo (in inglese)

Quando l'Activity inizia a fermarsi, il sistema chiama la funzione onSaveInstanceState() in modo che l'Activity possa salvare le informazioni sullo stato. L'implementazione predefinita di questa funzione salva informazioni transitorie sullo stato della gerarchia di visualizzazione dell'Activity, come il testo in una EditText o la posizione di una SeekBar, ecc.

Vediamo un'esempio:
Ecco come si presenta il file activity_main.xml Ecco come si presenta il file MainActivity.kt Ed ecco il risultato:
Avvio dell'app
Pulsante Calcola premuto
Orientamento dello schermo cambiato da portrait a landscape o viceversa


Se si preme il pulsante "Calcola" viene aggiornato il calcolo nella TextView ma se ruotiamo lo schermo il calcolo viene aggiornato tramite le righe 20 e 21 inizializzando le due variabili ai valori impostati alle righe 10 e 11.
Una soluzione potrebbe essere quella vista in questo articolo impostando l'attributo: ma comporta alcuni svantaggi come ad esempio:
Se abbiamo definito più layout in base al dispositivo utilizzato, questo non viene caricato quando orientiamo lo schermo.

Quindi la soluzione potrebbe essere quella dell'utilizzo di onSaveInstanceState() ecco come: tramite l'attributo outState.putInt("nome etichetta", variabile) e possibile salvare la variabile di tipo Int in un "cassetto" dal nome che viene definito in "nome etichetta".
Importante sapere che per ogni tipo di variabile (Int, Double, String, ecc.) occorre modificare outState.put... ecco alcuni esempi:
poi occorre richiamare le variabili memorizzate tramite la funzione onRestoreInstanceState() Anche in questo caso in base al tipo di variabile che vogliamo richiamare occorre specificarne il tipo in savedInstanceState.get... dove al posto dei puntini occorre scrivere: Int, Double, String, ecc.

N.B. La funzione onRestoreInstanceState() viene richiamata subito dopo onStart() e prima di onResume() quando l'Activity viene reinizializzata da uno stato precedentemente salvato, fornito in saveInstanceState(). La maggior parte delle implementazioni utilizzerà semplicemente onCreate() per ripristinare il loro stato, ma a volte è conveniente farlo qui dopo che è stata eseguita tutta l'inizializzazione o per consentire alle sottoclassi di decidere se utilizzare l'implementazione predefinita. L'implementazione predefinita di questo metodo esegue un ripristino di qualsiasi stato di visualizzazione precedentemente salvato da onSaveInstanceState().
Questa funzione viene chiamata solo quando si ricrea un'Activity; questa funzione non viene chiamata se onStart() viene chiamato per qualsiasi altro motivo.

Quindi è molto importate sapere in quale funzione (si raccomanda onResume() per migliori prestazioni) implementare la propria app in modo da poter sfruttare onRestoreInstanceState() per questo motivo fare riferimento a questo articolo.

Vediamo un esempio pratico:
Ecco come si presenta il file MainActivity.kt Da notare rispetto al codice precedente come le righe di codice: sono state spostate dalla funzione onCreate() alla funzione onResume() altrimenti onRestoreInstanceState() non avrebbe effetto se fossero rimaste all'interno della funzione onCreate().

Avvio dell'app
Pulsante Calcola premuto
Orientamento dello schermo cambiato da portrait a landscape o viceversa


Download Project
Download file APK


Commenti

Post popolari in questo blog

Android Studio - Impostare lingua app

In questo articolo vedremo come poter selezionare la lingua all'interno della nostra app. Nel precedente articolo in cui si parlava del file string.xml , la lingua dell'app veniva selezionata automaticamente in base alle impostazioni del dispositivo, mentre qui vedremo come poter selezionare a proprio piacimento la lingua che dovrà avere la nostra app indipendentemente dall'impostazione del dispositivo. Per prima cosa creare il layout Ecco un esempio do come può essere il file activity_main.xml Ora creare le stringhe di testo all'interno del file string.xml Ora creare la traduzione del file string.xml nelle varie lingua come descritto in questo articolo Il risultato sarà una serie di file string.xml delle varie lingue impostate. Ora queste di seguito sono tre funzioni che servono per: selezione della lingua salvataggio della selezione nelle preferenze dell'app caricamento della lingua quando si avvia l'app Ecco come si presenta il file Main

Arduino - Lettura tensione potenziometro e display LCD

Leggere il valore di un poteziometro (parte 2) Oggi vedremo come leggere il valore in tensione di un potenziometro collegato al pin Analogico A0 di Arduino.

Android Studio - Impostare uno sfondo sfumato

In Android Studio è possibile creare uno sfondo sfumato senza dover creare una immagine apposta per questo scopo. Per fare questo occorre seguire questi semplici passaggi: Aprire la cartella res Cliccare con il tasto destro sulla cartella drawable Selezionare New Selezionare Drawable resource file Dare un nome al file ad esempio gradient_background Cliccare sul pulsante OK per confermare Una volta aperto il file gradient_background.xml inserire le seguenti righe di codice: Alla riga 6 inserire l'angolo che definisce la direzione della sfumatura (valori da 0 a 360) Alla riga 7 inserire il colore di partenza in formato esadecimale Alla riga 8 inserire il colore finale in formato esadecimale Per quanto riguarda i colori è possibile utilizzare il sito webgradients.com in modo da poter utilizzare le sfumature proposte o creare le proprie sfumature personalizzate. Una volta creato il file che definisce lo sfondo passare al layout ed impostare l'attibuto backgr