programacion - Android: abra la actividad sin guardarla en la pila
manual de android en pdf (8)
¿No puede anular el botón de retroceso en la actividad particular para detener la funcionalidad de "devolución"?
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.onKeyDown(keyCode, event);
}
Tengo 2 actividades: Principal y Lista.
Desde Main puedes abrir List; de List puedes abrir Main.
Me gustaría que cada apertura de List no se guarde en la ''historia''. Por lo tanto, presionar desde Main no puede regresar a List.
¿Es posible?
Al comenzar la Activity
su lista, establezca sus indicadores de Intent
manera:
Intent i = new Intent(...); // Your list''s Intent
i.setFlags(i.getFlags() | Intent.FLAG_ACTIVITY_NO_HISTORY); // Adds the FLAG_ACTIVITY_NO_HISTORY flag
startActivity(i);
El indicador FLAG_ACTIVITY_NO_HISTORY
evita que la nueva Activity
se agregue a la pila del historial.
NB: Como señala @Sam, puede usar i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
en lugar. No hay diferencia funcional
En el archivo de manifiesto, agregue:
android:noHistory="true"
a la actividad que no quieres mantener en la pila.
En mi caso particular, FLAG_ACTIVITY_NO_HISTORY
no funcionó. Tampoco funcionaron FLAG_ACTIVITY_NEW_TASK
o FLAG_ACTIVITY_CLEAR_TASK
solo.
Sin embargo, FLAG_ACTIVITY_NEW_TASK
y FLAG_ACTIVITY_CLEAR_TASK
juntas funcionaron.
Intent intent = new Intent(FooActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
Parece que si llamas a finish () en tu actividad inmediatamente después de haber abierto otra, la que está terminada se eliminará de la pila.
por ejemplo:
Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);
finish();
Solo quería agregar una forma de hacer esto en Kotlin:
val i = Intent(this, LogInActivity::class.java)
startActivity(i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK))
Use la nueva tarea con despeje. Esto funcionó en mi caso cuando las otras opciones no.
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
Borre toda la pila de historial y comience una nueva actividad en Android
agregue la bandera FLAG_ACTIVITY_NEW_TASK
a su Intent
http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK