2010-07-01 10 views
6

Me preguntaba si es posible crear varias instancias de una sola actividad en Android.Android - Cómo crear varias instancias de una actividad?

momento de empezar mi propia pantalla de llamadas entrantes para una prueba de VoIP utilizando el siguiente código:


 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); 

Esto permite que empiece la multa actividad.

Sin embargo, cuando lo llamo por un segundo, simplemente regresa a la Actividad ya creada en lugar de crear una nueva Actividad y colocarla en la pila.

Me gustaría ser capaz de crear la actividad varias veces de modo que tenga dos o 3 Actividades en la pila y el usuario puede cambiar entre ellos, el uso de hogar, de vuelta botones, etc ...

¿Este posible y si es así, ¿qué estoy haciendo mal?

+0

no he hecho la investigación apropiada, pero dada su descripción, estoy gu Siendo que 'CallDialogActivity' es del modo de lanzamiento' single top', en cuyo caso no creo que haya mucho que puedas hacer. si esto no se especificó explícitamente, sería el comportamiento predeterminado que está solicitando ... –

+0

¿Hay alguna manera de comprobar si es único? –

+0

@DonalRafferty ¿Pudo resolver este problema ...? –

Respuesta

7

Sin embargo, cuando la llamo por un segundo que simplemente vuelve a la actividad ya creado en lugar de crear una nueva Actividad y colocarlo en la pila.

Probablemente haya cambiado su manifiesto para agregar un atributo android:launchMode que está interfiriendo con su objetivo. Por defecto, comenzar una actividad inicia una nueva instancia.

también:

  • Deshacerse de myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);, ya que no desea una nueva tarea en función de lo que ha escrito aquí
  • Desde context es probablemente un Context, no sé por qué se va a través de todas las cosas ContextWrapper/getBaseContext()
+0

Lo siento, mover código viejo a un nuevo proyecto, gracias por señalar el contexto. Cuando elimino myIntent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); Recibo el siguiente error al intentar iniciar la actividad: AndroidRuntimeException: la llamada a startActivity() desde fuera del contexto de una actividad requiere el indicador FLAG_ACTIVITY_NEW_TASK. ¿Es esto realmente lo que quieres? ¿No estoy seguro pero creo que necesito el marcador FLAG_ACTIVITY_NEW_TASK establecido? Además, no hay configuración de launchMode en ningún lugar en mi manifiesto. –

+0

@Donal Rafferty: ¿De dónde vas a lanzar esto? – CommonsWare

+0

desde un servicio dentro de la misma aplicación. –

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

me funciona –

Cuestiones relacionadas