2013-10-11 20 views
9

Ho riscontrato un problema relativo al salvataggio dello stato della mia attività. Ho cercato e letto molte domande qui in SO, ma non ho potuto ottenere una risposta per la mia domanda.Come recuperare il bundle onSaveInstanceState() in onResume()?

Ho un Activity A con 2 Fragments. Il Activity A contiene i dati mostrati dallo Fragments. Quando lancio un nuovo Intent per le mie impostazioni Activity il Activity A viene messo in pausa (non distrutto), vengono chiamati i metodi onPause() e , quindi salvo tutti i miei dati in onSaveInstaceState().

Quando torno dalle mie impostazioni utilizzando il pulsante Activity posteriore A viene visualizzato di nuovo, ma onCreate() metodo non viene chiamato in quanto il Activity non è stato distrutto, invece onResume() metodo viene chiamato, ma ho perso lo stato delle mie variabili in Activity A e I impossibile accedere allo Bundle Ho salvato in onSaveInstanceState() perché onCreate() non viene chiamato.

Quindi onSaveInstanceState() è utile solo quando si ruota lo schermo? Come posso accedere a tutti i dati che ho salvato in onSaveInstanceState()? O dovrei salvarli in un file o SharedPrefs per accedervi in ​​seguito in onResume()?

+1

Non sta facendo molto senso ... hai perso i dati delle vostre variabili di istanza dichiarati Acitivy A? Sono andati nulli? –

risposta

23

Può questo aiuto?
1. Utilizzare getIntent().putExtras() in onStop() per salvare i dati nel pacchetto Attività.
2. Quindi getIntent().getExtras() in onResume() per recuperarlo.

E si dovrebbe fare un controllo null prima l'accesso al fascio :)

+0

Ha funzionato alla grande! Per salvare i dati ho usato 'getIntent(). PutExtras()' perché 'getIntent(). GetExtras()' è nullo in quel momento in cui non hai ancora salvato nulla. – Andres

+0

Puoi condividere un esempio? Sto cercando di implementarlo su onStop/onResume, ma non ho molta fortuna. – snapplex

+0

È incredibile come gli sviluppatori Android ci raccomandino di usare 'onSaveInstanceState',' onRestoreInstanceState' e 'onCreate', ma è molto instabile. Grazie per aver condiviso questo, ha risolto il mio problema –

-3

È possibile salvare tutte le cose da SavedInstance nel bundle o variabile.

e impostare i dati sul metodo onActivityCreated come:

@Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onActivityCreated(savedInstanceState); 

     // Do your stuff here 

} 
+0

A volte onActivityCreated non è stato chiamato. –

Problemi correlati