¿Cómo reinicio un Android Activity
? Intenté lo siguiente, pero Activity
simplemente se fue.
public static void restartActivity(Activity act){
Intent intent=new Intent();
intent.setClass(act, act.getClass());
act.startActivity(intent);
act.finish();
}
android
android-activity
Samet ÖZTOPRAK
fuente
fuente
Respuestas:
Hice mi selector de tema así:
Básicamente, llamo
finish()
primero, y estoy usando exactamente la misma intención con la que se inició esta actividad. Eso parece hacer el truco?ACTUALIZACIÓN: Como señala Ralf a continuación,
Activity.recreate()
es el camino a seguir en API 11 y más allá. Esto es preferible si está en un entorno API11 +. Todavía puede verificar la versión actual y llamar al fragmento de código anterior si está en API 10 o inferior. (¡No olvides votar la respuesta de Ralf!)fuente
Desde el nivel de API 11 (Honeycomb), puede llamar al método recreate () de la actividad (gracias a esta respuesta).
El método recreate () actúa como un cambio de configuración, por lo que también se llama a los métodos onSaveInstanceState () y onRestoreInstanceState (), si corresponde.
fuente
Antes del SDK 11, una forma de hacerlo es así:
fuente
overridePendingTransition(0, 0);
despuésfinish()
ystartActivity()
, respectivamente, no donde lo llamó ...Solo para combinar las respuestas de Ralf y Ben (incluidos los cambios realizados en los comentarios):
fuente
Utilicé este código para poder admitir versiones anteriores de Android y usar
recreate()
en versiones más nuevas de Android.Código:
Muestra:
fuente
Esta solución funcionó para mí.
Primero termina la actividad y luego comienza de nuevo.
Código de muestra:
fuente
Esta es, con mucho, la forma más fácil de reiniciar la actividad actual:
fuente
Llamar a este método
Gracias,
fuente
Aunque esto ha sido respondido varias veces.
Si reinicia una actividad desde un fragmento, lo haría así:
Entonces, ¿podrías estar pensando que esto es un poco exagerado? Pero la
Handler
publicación le permite llamar a esto en un método de ciclo de vida. He usado esto enonRestart
/onResume
métodos al verificar si el estado ha cambiado entre el usuario que regresa a la aplicación. (instalado algo).Sin el
Handler
si lo llamas en un lugar extraño, simplemente matará la actividad y no la reiniciará.No dude en hacer cualquier pregunta.
Saludos, Chris
fuente
Bueno, esto no está en la lista, pero una combinación de algunos que ya está publicado:
fuente
En combinación con el extraño comportamiento del ciclo de vida de SurfaceView con la cámara . He descubierto que recrear () no se comporta bien con el ciclo de vida de SurfaceViews. SurfaceDestroyed nunca se llama durante el ciclo de recreación. Se llama después de onResume (extraño), en cuyo punto se destruye mi SurfaceView.
La forma original de recrear una actividad funciona bien.
No puedo entender exactamente por qué es esto, pero es solo una observación que espero pueda guiar a otros en el futuro porque solucionó los problemas que tenía con SurfaceViews
fuente
Me pregunto por qué nadie mencionó lo
Intent.makeRestartActivityTask()
que hace este propósito exacto.Este método establece
Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK
como banderas predeterminadas.fuente
En realidad, el siguiente código es válido para los niveles de API 5 y superiores, por lo que si su API de destino es inferior a esto, terminará con algo muy similar al código de EboMike.
fuente
Hay una forma hacky que debería funcionar en cualquier actividad, incluida la principal.
Cuando la orientación cambia, Android generalmente recreará su actividad (a menos que la anule). Este método es útil para rotaciones de 180 grados, cuando Android no recrea su actividad.
fuente
intenta usar esto ...
fuente
La solución para su pregunta es:
Debe lanzar al contexto de actividad para comenzar una nueva actividad y también para finalizar la actividad actual.
Espero que esto sea útil ... y funciona para mí.
fuente
Si elimina la última línea, creará una nueva
act
Actividad, pero su instancia anterior seguirá viva.¿Necesita reiniciar la actividad como cuando se cambia la orientación (es decir, su estado se guarda y se pasa
onCreate(Bundle)
)?Si no lo hace, una posible solución sería usar una actividad ficticia adicional, que se iniciaría desde la primera actividad, y qué trabajo es iniciar una nueva instancia de la misma. O simplemente retrasar la llamada a
act.finish()
después de que se inicie la nueva.Si necesita salvar la mayor parte del estado, está entrando en aguas bastante profundas, porque no es trivial pasar todas las propiedades de su estado, especialmente sin filtrar su Contexto / Actividad anterior, pasándolo a la nueva instancia.
Por favor, especifique qué está tratando de hacer.
fuente
Así es como lo hago.
fuente
Si está llamando desde algún fragmento, hágalo a continuación.
fuente
simplemente puedes usar
método de la siguiente manera
y llame a onRestart () donde desea reiniciar la actividad actual
fuente
Llame al método onCreate. Por ejemplo
onCreate(null);
fuente