2010-04-22 11 views
6

Tengo un gran laberinto de actividades en mi aplicación. Lo que tengo que hacer es que cuando el usuario inicia sesión en el sistema, el historial de actividad se borre. No puedo usar finish() cuando comienzo una nueva actividad, porque quiero que las actividades tengan un historial hasta que el usuario inicie sesión. He experimentado con los diferentes indicadores al comenzar una actividad, pero no he tenido éxito. ¿Algunas ideas?Actividad de inicio y borrar el historial de actividad

Cheers,

Respuesta

2

que bien podría revelar la Hax Actualmente estoy usando para resolver mi problema. En el "pre-conectado" actividades, ésta la he puesto en el manifiesto:

android:noHistory="true" 

Luego, en cada actividad que tengo este código:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     Intent intent = new Intent(MyActivity.this, ParentActivity.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
     startActivity(intent); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 

} 

El FLAG_ACTIVITY_NO_ANIMATION sólo funciona en teléfonos con el nivel de la API 5 o superior, pero lo que hace es que, en cambio, en la "nueva actividad abierta" -animación, el "volver a la actividad previa" - se juega una animación (al menos en el droide y el nexo). Esto evita la apariencia confusa de que una nueva actividad se inicia cuando el usuario presiona el botón Atrás.

Esta solución no es perfecta. En teléfonos con un nivel de API inferior a 5, las animaciones se vuelven incorrectas. Además, no es super ordenado y requiere más código, entonces prefiero. Aún así, funciona ...

+0

Esta totalmente trabajado para mí cuando se trata de simular "volver" a una actividad previa (es decir, por supuesto, no es realmente ahí). ¡Gracias! Iba a lograr esto usando los ID de animación predeterminados pero, para mi sorpresa, esos no están disponibles públicamente. Imagínate. – dmon

+1

si está usando realmente el keyDown, probablemente debería devolver true en lugar de llamar al super – njzk2

+0

Es cierto, he corregido mi respuesta. – pgsandstrom

1

se puede utilizar en lugar de 65536Intent.FLAG_ACTIVITY_NO_ANIMATION para versiones anteriores

Cuestiones relacionadas