2010-07-01 12 views
6

Mi chiedevo se fosse possibile creare più istanze di una singola attività in Android?Android - Come creare istanze multiple di un'attività?

Io attualmente iniziare il mio proprio schermo ricevo per un test Voip utilizzando il seguente codice:


 public void initInCallScreen(String pName, String phoneNumber, int contactID, boolean 
     callDirection, int lineID){ 

    //starts in callScreen dialog 
    final Intent myIntent = new Intent(context, CallDialogActivity.class); 
    myIntent.putExtra("NAME", pName); 
    myIntent.putExtra("NUMBER", phoneNumber); 
    myIntent.putExtra("ID", contactID); 
    myIntent.putExtra("CALLTYPE", callDirection); //True = Incoming, False = Outgoing 
    myIntent.putExtra("LINEID", lineID); 
    myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(myIntent); 

Questo mi permette di iniziare la multa attività.

Tuttavia, quando lo chiamo per un secondo, ritorna semplicemente all'attività già creata anziché creare una nuova attività e posizionarla nello stack.

Mi piacerebbe essere in grado di creare l'attività più volte in modo da avere due o 3 Attività sul stack e l'utente può passare tra di loro, utilizzando a casa, torna pulsanti ecc ...

È questo possibile e se sì cosa sto facendo di sbagliato?

+0

non ho fatto la ricerca adeguata ma dato descrizione, io sono gu Essing that CallDialogActivity è la modalità di lancio 'single top', nel qual caso non credo ci sia molto da fare. se questo non è stato specificato in modo esplicito, si configurerebbe automaticamente il comportamento che stai richiedendo ... –

+0

C'è un modo per verificare se è single top? –

+0

@DonalRafferty sei riuscito a risolvere questo problema ..? –

risposta

7

Tuttavia quando lo chiamo per un secondo che appena ritorna alla attività già creato, piuttosto che la creazione di una nuova attività e l'immissione in pila.

Probabilmente hai modificato il manifest per aggiungere un attributo android:launchMode che interferisce con il tuo obiettivo. Per impostazione predefinita, l'avvio di un'attività avvia una nuova istanza.

anche:

  • Sbarazzarsi della myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);, dal momento che non si vuole una nuova attività in base a quello che hai scritto qui
  • Dal context è probabilmente una Context, non so il motivo per cui si sta andando attraverso tutte le cose ContextWrapper/getBaseContext()
+0

Scusa, spostando il vecchio codice in un nuovo progetto, grazie per aver indicato il contesto. Quando rimuovo myIntent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); Viene visualizzato il seguente errore quando si tenta di avviare l'attività: AndroidRuntimeException: la chiamata di startActivity() dall'esterno di un contesto attività richiede il flag FLAG_ACTIVITY_NEW_TASK. E 'davvero ciò che vuoi? Quindi non sono sicuro, ma penso di aver bisogno del flag flag FLAG_ACTIVITY_NEW_TASK? Inoltre, non c'è alcuna impostazione launchMode in nessun punto del mio manifest. –

+0

@Donal Rafferty: Da dove stai lanciando questo? – CommonsWare

+0

Da un servizio all'interno della stessa applicazione. –

3
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK 
      | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 
      | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); 
+0

funziona per me –

Problemi correlati