2013-05-03 5 views
10

Sto utilizzando onSaveInstanceState() per memorizzare una variabile membro ArrayList e ripristinarla nel metodo onCreate() dell'attività principale. Questo funziona nella maggior parte dei casi, come la rotazione dello schermo ecc. Ma se apro una nuova attività e utilizzo il pulsante 'su' (non il pulsante Indietro) per tornare alla schermata principale, sembra che crei una nuova attività principale senza passare bundle di stato in onCreate().Ripristino dello stato in Android quando si utilizza il pulsante "su"

Ho confermato che quando viene premuto il pulsante su viene chiamato il metodo onDestroy() per l'istanza originale dell'attività principale che non ha senso per me perché voglio che riprenda l'attività esistente come se avessi premuto il pulsante Indietro piuttosto che crearne uno nuovo.

Esiste un modo per forzare la nuova attività a ripristinare quella precedente o solo riprendere l'attività esistente?

+0

Grazie per le risposte veloci, ho avuto un incidente di basket subito dopo questo post e poi dimenticato su di esso fino a quando ho iniziato di nuovo sul progetto oggi! : S – archangel

risposta

13

Prova impostando la modalità di lancio della principale attività di singleTop, in palese:

<activity android:name="activityName" android:launchMode="singleTop" ... /> 
+0

Ciò significa che l'attività non viene distrutta quando si preme il pulsante su, quindi (in questo caso) non si 'need thestanceInstanceState - quando il sistema distrugge la tua attività per recuperare alcune risorse (dopo che ti sei allontanato da esso), userà il pacchetto sIS. Attiva "non mantenere attività" nelle impostazioni di debug ICS + per simulare che – FunkTheMonk

+0

Grazie, questo ha fatto il trucco. – archangel

0

Hai provato a utilizzare:

Intent i = new Intent(this, MainScreenActivity.class); 
    i.setFlags(Intent.FLAG_CLEAR_TOP); 
startActivity(i); 
    finish(); 

Questo codice dovrebbe chiamata premendo sul tasto.

+0

Ho provato questo metodo e non ha funzionato anche se sono d'accordo che dovrebbe avere dalla descrizione di FLAG_CLEAR_TOP – archangel