Saltar al contenido

¿Relanzar / recrear programáticamente una actividad?

Solución:

ACTUALIZAR: Android SDK 11 agregó un recreate() método a las actividades.


Lo hice simplemente reutilizando la intención que inició la actividad. Definir una intención starterIntent en su clase y asígnelo en onCreate() utilizando starterIntent = getIntent();. Luego, cuando quieras reiniciar la actividad, llama finish(); startActivity(starterIntent);

No es una solución muy elegante, pero es una forma sencilla de reiniciar tu actividad y obligarla a recargar todo.

Llame al método de recreación de la actividad.

Opción 1

Llama recreate() en tu Activity. Sin embargo, este método hace que aparezca una pantalla negra intermitente durante la recreación de la actividad.

opcion 2

finish();
startActivity(getIntent());

Aquí no hay pantalla negra “parpadeante”, pero verá una transición entre las instancias antiguas y nuevas con un fondo negro no tan agradable. Podemos hacerlo mejor.

Opcion 3

Para solucionar esto, podemos agregar una llamada a overridePendingTransition() :

finish();
startActivity(getIntent());
overridePendingTransition(0, 0);

Adiós pantalla negra, pero en mi caso todavía veo algún tipo de transición (una animación de desvanecimiento), esta vez sobre un fondo de color. Eso es porque estás terminando la instancia actual de tu actividad. antes de el nuevo se crea y se vuelve completamente visible, y el color intermedio es el valor del windowBackground atributo de tema.

Opción 4

startActivity(getIntent());
finish();

Vocación finish() después startActivity() utilizará la transición predeterminada entre actividades, a menudo con una pequeña animación deslizante. Pero la transición aún es visible.

Opcion 5

startActivity(getIntent());
finish();
overridePendingTransition(0, 0);

Para mí, esta es la mejor solución porque reinicia la actividad sin ninguna transición visible, como si no pasara nada.

Podría ser útil si, por ejemplo, en su aplicación expone una forma de cambiar el idioma de visualización independientemente del idioma del sistema. En este caso, siempre que el usuario cambie el idioma de su aplicación, probablemente querrá reiniciar su actividad sin transición, haciendo que el cambio de idioma parezca instantáneo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *