Tengo 2 actividades: Principal y Lista.
Desde Main puede abrir List; desde la Lista puede abrir Main.
Me gustaría que todas las aperturas de List no se guarden en el "historial". Por lo tanto, presionar atrás desde Main no puede regresar a List.
¿Es posible?
android
back-stack
realtebo
fuente
fuente
finish()
inmediatamente despuésstartActivity(...)
. De esa manera, si el usuario presiona ATRÁS desde 'principal', no habrá nada a lo que volver.Respuestas:
Al comenzar la de su lista
Activity
, configure susIntent
banderas así:La
FLAG_ACTIVITY_NO_HISTORY
bandera evita queActivity
se agregue lo nuevo a la pila del historial.NB: Como señala @Sam, puede usar
i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
en su lugar. No hay diferencia funcional.fuente
Intent
bandera que diga "solo se suma a la historia si no se regresa alActivity
de origen".setFlags()
engetFlags()
lugar deIntent.addFlags()
?En el archivo de manifiesto, agregue:
a la actividad que no desea mantener en la pila.
fuente
Utilice la nueva tarea con compensación. Esto funcionó en mi caso cuando las otras opciones no lo hicieron.
Borre todo el historial y comience una nueva actividad en Android
fuente
Parece que si llamas a finish () en tu actividad justo después de haber abierto otra, la que está terminada se elimina de la pila.
por ejemplo:
fuente
En mi caso particular
FLAG_ACTIVITY_NO_HISTORY
no funcionó. Ni lo hizoFLAG_ACTIVITY_NEW_TASK
niFLAG_ACTIVITY_CLEAR_TASK
trabajaron solos por sí mismos.Sin embargo
FLAG_ACTIVITY_NEW_TASK
yFLAG_ACTIVITY_CLEAR_TASK
juntos funcionó.fuente
Solo quería agregar una forma de hacer esto en Kotlin:
fuente
Intent(this, MainActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) }.also { startActivity(it) }
Respuesta tardía, pero agrega algo de profundidad a otras respuestas. Todo se reduce a qué quieres que suceda con otras actividades iniciadas a partir de esa actividad.
Opción 1: solo esta actividad no debe tener un historial de actividad de llamadas
Entonces solo haz:
Opción 2: todas las actividades iniciadas a partir de esa actividad específica no deben tener historial
Luego agregue el manifiesto de la actividad de llamada:
Pero si desea tener un historial en una nueva actividad, debe eliminar manualmente la bandera:
Espero que aclare otras respuestas :)
fuente
Prueba FLAG_ACTIVITY_CLEAR_TOP si la actividad ya se está ejecutando:
fuente
agrega la bandera
FLAG_ACTIVITY_NEW_TASK
a tuIntent
http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK
fuente
¿No puede anular el botón de retroceso en la actividad en particular para detener la funcionalidad de 'devolución'?
fuente
Activity
no es una buena práctica.OnBackPressed
para eso.