Qualcuno può aiutarmi a conoscere il Bundle savedInstanceState
in onCreate(Bundle savedInstanceState)
Sono newbie in Android. Cerco di capirlo da developer.android.com. Ma non sono in grado di capire. Qualcuno può semplificarlo?
Qualcuno può aiutarmi a conoscere il Bundle savedInstanceState
in onCreate(Bundle savedInstanceState)
Sono newbie in Android. Cerco di capirlo da developer.android.com. Ma non sono in grado di capire. Qualcuno può semplificarlo?
Risposte:
Se salvi lo stato dell'applicazione in un bundle (in genere dati dinamici non persistenti in onSaveInstanceState
), può essere ritrasmesso onCreate
se l'attività deve essere ricreata (ad esempio, cambio di orientamento) in modo da non perderlo prima informazione. Se non sono stati forniti dati, savedInstanceState
è nullo.
... dovresti usare il metodo onPause () per scrivere tutti i dati persistenti (come le modifiche dell'utente) nella memoria. Inoltre, il metodo onSaveInstanceState (Bundle) viene chiamato prima di posizionare l'attività in tale stato in background, consentendo di salvare qualsiasi stato dell'istanza dinamica nella tua attività nel Bundle dato, per essere successivamente ricevuto in onCreate (Bundle) se l'attività deve essere ricreato. Vedere la sezione Ciclo di vita del processo per ulteriori informazioni su come il ciclo di vita di un processo è legato alle attività che ospita. Si noti che è importante salvare i dati persistenti in onPause () anziché in onSaveInstanceState (Bundle) perché quest'ultimo non fa parte dei callback del ciclo di vita, quindi non verrà chiamato in ogni situazione come descritto nella sua documentazione.
onCreate(Bundle savedInstanceState)
si otterrà il valore Bundle
nullo quando l'attività inizia per la prima volta e verrà utilizzato quando l'orientamento dell'attività viene modificato ...
http://www.gitshah.com/2011/03/how-to-handle-screen-orientation_28.html
Android offre un altro modo elegante per raggiungere questo obiettivo. Per ottenere ciò, dobbiamo sovrascrivere un metodo chiamato onSaveInstanceState()
. La piattaforma Android consente agli utenti di salvare qualsiasi stato dell'istanza. Lo stato dell'istanza può essere salvato nel bundle. Il bundle viene passato come argomento al metodo onSaveInstanceState.
possiamo caricare lo stato dell'istanza salvata dal bundle passato come argomento al onCreate
metodo. Possiamo anche caricare lo stato dell'istanza salvata in onRestoreInstanceState
method. Ma lascerò che lo capiscano i lettori.
savedInstanceState
sarà non null
se è onSavedInstanceState()
stato precedentemente chiamato. i cambiamenti di orientamento sono solo un esempio in cui ciò potrebbe verificarsi.
Bundle
argomento onCreate(Bundle)
sarà non null
se e solo se il Activity
fatto il suo onSaveInstanceState
metodo chiamato in precedenza. Ciò accade durante i cambiamenti di orientamento ... e accade anche quando l'attività ritorna dopo essere stata interrotta dal sistema operativo e quando si attiva qualsiasi altra modifica di configurazione di interesse sul dispositivo.
Come ha risposto Dhruv Gairola, puoi salvare lo stato dell'applicazione utilizzando Bundle savedInstanceState. Sto cercando di fornire un esempio molto semplice che i nuovi studenti come me possano capire facilmente.
Supponiamo di avere un semplice frammento con TextView e Button. Ogni volta che si fa clic sul pulsante, il testo cambia. Ora, cambia l'orientamento del tuo dispositivo / emulatore e nota che hai perso i dati (significa che i dati modificati dopo aver fatto clic su ottenuto) e il frammento ricomincia come la prima volta. Usando Bundle savedInstanceState possiamo sbarazzarci di questo. Se dai un'occhiata al ciclo di vita del frammento. Fragment Lifecylce vedrai che un metodo "onSaveInstanceState" viene chiamato quando il frammento sta per essere distrutto.
Quindi, possiamo salvare lo stato significa che il valore del testo modificato in quel pacchetto in questo modo
int counter = 0;
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("value",counter);
}
Dopo aver effettuato l'orientamento, il metodo "onCreate" verrà chiamato giusto? quindi possiamo solo farlo
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState == null){
//it is the first time the fragment is being called
counter = 0;
}else{
//not the first time so we will check SavedInstanceState bundle
counter = savedInstanceState.getInt("value",0); //here zero is the default value
}
}
Ora, non perderai il tuo valore dopo l'orientamento. Il valore modificato verrà sempre visualizzato.
Funzione onCreate (Bundle savedInstanceState) in Android:
1) Quando un'attività chiama per la prima volta o viene avviata, il metodo onCreate (Bundle savedInstanceState) è responsabile della creazione dell'attività.
2) Ogni volta che l'orientamento (cioè da orizzontale a verticale o da verticale a orizzontale) dell'attività viene modificato o quando un'attività viene terminata con forza da qualsiasi sistema operativo, allora saveInstanceState, ovvero l'oggetto della Bundle Class, salverà lo stato di un'attività.
3) Dopo la modifica dell'orientamento, onCreate (Bundle savedInstanceState) chiamerà e ricrea l'attività e caricherà tutti i dati da savedInstanceState.
4) Fondamentalmente la classe Bundle viene utilizzata per memorizzare i dati dell'attività ogni volta che la condizione di cui sopra si verifica nell'app.
5) onCreate () non è richiesto per le app. Ma il motivo per cui viene utilizzato nell'app è perché quel metodo è il posto migliore in cui inserire il codice di inizializzazione.
6) Puoi anche mettere il tuo codice di inizializzazione in onStart () o onResume () e quando l'app verrà caricata per prima, funzionerà come in onCreate ().
onCreate(Bundle)
viene chiamato quando l'attività inizia per la prima volta. È possibile utilizzarlo per eseguire un'inizializzazione una tantum come la creazione dell'interfaccia utente. onCreate()
accetta un parametro che è nullo o alcune informazioni di stato precedentemente salvate da onSaveInstanceState
.
onCreate (Bundle savedInstanceState) viene chiamato e savedInstanceState sarà non nullo se la tua attività è stata terminata in uno scenario (visualizzazione visiva) descritto sopra. La tua app può quindi acquisire (catturare) i dati da savedInstanceState e rigenerare la tua attività