2012-07-30 35 views
7

enter image description hereTorna alla schermata precedente senza creare una nuova istanza

Come spiegato nell'immagine, il flusso è qualcosa del genere. Quindi ogni volta che l'utente fa clic sul pulsante logo, l'attività A deve essere chiamata. Come soluzione semplice possiamo usare questo metodo ...

Intent intent = new Intent(activity, activityToStart); 
startActivity(intent); 

Ma questa attività creerà una nuova attività per la mia app. ma ho bisogno di chiamare la stessa istanza dell'attività mentre andiamo avanti nel diagramma di flusso. da Attività A a B e poi di nuovo su B può essere chiamato facilmente chiamando finish() ma dall'attività C o D, come tornare a A.

Sono a corto di idee ma non ottengo alcun risultato fruttuoso. Per favore aiutami se hai qualche suggerimento o in qualsiasi posto sto sbagliando. Grazie in anticipo.

+1

Dai un'occhiata a [FLAG_ACTIVITY_CLEAR_TOP] (http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP) – Praveenkumar

risposta

12

Per tornare da D a A, utilizzare Intent Flags.

Intent intent = new Intent(activity, activityToStart); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) 
startActivity(intent); 

FLAG_ACTIVITY_CLEAR_TOP, sarà invece di creare nuove attività, invocherà l'attività sullo stack, e si aprirà tutte le attività sopra l'attività viene richiamato.

+0

ok Grazie. Farò un tentativo. – Android

+0

+1 Soluzione corretta. – Praveenkumar

0

Rendendo l'attività A un "SingleTask" è possibile ottenere questo. Quando un'attività è nel SingleTask facendo clic sul pulsante Home, le altre attività verranno rimosse dallo stack.

deferire tali collegamento di per più informazioni Android Activites ...

Link 1 - Android Fundamentals

Link 2 - Another Similar Question

+0

Don; t pensi che in questo modo non sarò in grado di ottenere la funzionalità del pulsante Indietro. Grazie comunque. – Android

0

Usa ViewFlipper per andare e tornare tra le finestra diversa nella stessa attività.

ViewFlipper vf = (ViewFlipper) findViewById(R.id.view_flipper); 

Per passare alla finestra successiva

vf.showNext(); 

Per passare alla finestra precedente

vf.showPrevious(); 
0

invece di utilizzare

Intent intent = new Intent(activity, activityToStart); 
startActivity(intent); 

Usa

Intent intent = new Intent(activity, activityToStart); 
startActivityforResult(intent,1234); 

Questo farà sì che l'attività A non sia uccisa e quando finisci la tua attività C, l'attività A riprende.

Nota: - Ogni volta che si crea una nuova attività, senza finitura (Uscita) l'attività Host, l'attività host viene salvato nello stack in ordine LIFO

LIFO: - Last In First Out

+0

Grazie per la spiegazione. Proverò sicuramente la tua soluzione. – Android

0

Non sono sicuro, è giusto o no, ma puoi provarlo!

È possibile finire() l'attività corrente quando si apre la nuova a partire da Attività-B.

cioè

Per aprire Activity-C => finitura Activity-B e iniziare Activity-C

Per aprire Activity-D => finitura Activity-C e avviare attività-D

ora quando si preme indietro, l'attività A si aprirà.

+0

Grazie. Proverò secondo il tuo suggerimento – Android

Problemi correlati