Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Lleve una actividad al frente usando FLAG_ACTIVITY_REORDER_TO_FRONT

Mi pila de actividades es A1 B A2, con A2 en la parte superior.

A1 y A2 son instancias de la misma actividad, A. Ahora en A2, quiero que A2 salga y traiga A1 hacia delante, por lo que la pila final debe ser B A1. ¿Cómo debo implementarlo?

Mi código actual que A2 ejecuta es:

finish(); intent = new Intent(this, A.class); intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP); startActivity(intent); 

El código anterior trajo B al frente, por lo que la pila final es A1 B, que no es lo que esperaba.

¿Alguna idea?

Gracias.

  • NavigationDrawer utilizando sólo la biblioteca de asistencia de Android
  • Emulador de Android: Error de instalación: INSTALL_FAILED_VERSION_DOWNGRADE
  • Administrador SDK de Android no instala componentes
  • ¿Dónde puedo encontrar google-play-services_lib.jar?
  • Android - No se puede obtener la ubicación del GPS en el emulador
  • Análisis de Android Firebase Analytics Eventos personalizados en la consola
  • Archivo de configuración de Android Studio ORMLite - No se pudo encontrar el directorio de Raw
  • Cómo crear un proyecto jar de android con src, carpeta res
  • 3 Solutions collect form web for “Lleve una actividad al frente usando FLAG_ACTIVITY_REORDER_TO_FRONT”

    No es posible hacer lo que quiera con las banderas de intención.

    La razón se debe a la forma en que FLAG_ACTIVITY_REORDER_TO_FRONT funciona. Cuando usa este indicador, Android busca una instancia de la actividad deseada en su pila de actividades, empezando por el frente de la pila y escaneando hasta llegar a la raíz / posterior de la pila. Tan pronto como encuentre una instancia de la actividad especificada, la llevará al frente (es decir: si hay varias instancias de la actividad especificada, traerá al frente la instancia más reciente ).

    En su caso, la pila de actividades se ve así:

     A1, B, A2 (front of task) 

    Al intentar reordenar su actividad A, Android encuentra primero la instancia A2 y la reordena al frente de la tarea. Por supuesto, ya estaba en la parte delantera de la tarea por lo que realmente no hacer nada.

    Por supuesto, ya has llamado a finish() en esta actividad y has intentado (mediante FLAG_ACTIVITY_PREVIOUS_IS_TOP ) decirle a Android que no debería considerar la actividad actual al decidir qué hacer, pero todo esto se ignora. Android considera A2 como la instancia más reciente de la actividad A y la reordena al frente. Entonces A2 se termina y la actividad B se convierte en el frente de la tarea. El usuario ve "B" y la pila de actividades es:

     A1, B (front of task) 

    Tendrás que encontrar otra forma de lograr los resultados deseados (ya que este post es casi 2 años de edad supongo que ya has encontrado otra manera).

    En mi aplicación, tengo exactamente la misma situación.

    Mi solución fue crear una actividad Start-up invisible, X, que redirige a A

    Así que su pila se vería así:

    X A1 B A2

    En cualquier momento necesito volver a A1, rebobinar a X (usando FLAG_ACIVITY_CLEAR_TOP), que, a su vez, iniciará A.

    Llamas finish () antes de llamar a startActivity. ¿Cómo crees que se supone que debe comenzar la actividad después de que ya está terminado?

    Además, ¿cómo se supone que debe saber qué instancia de A traerá al frente?

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.