2011-04-03 11 views
8

en una aplicación que estoy escribiendo, hay una parte que le permite cambiar la configuración de una cortina. el problema es que esta configuración no tendrá efecto hasta que la actividad sea recreada. ¿Hay alguna manera de decirle a la aplicación que reinicie usando el método onResume() (con suerte, le permite guardar todo en onSaveInstanceState())?¿cómo reinicio una actividad en android?

+0

¿No puede simplemente iniciar otra instancia y luego llamar a finalizar en el original? – Blundell

+0

@Blundell - el truco es llamar a 'finish()' _forendo_ para iniciar la nueva instancia. –

+0

básicamente, todo lo que quiero hacer es poder llamar al método onCreate() desde el método onRestart(). ¿Cómo haría eso para que onSaveInstanceState() guardara todo? porque con esto, todo se restablece, ¿es que se trata de una actividad totalmente nueva? – Ephraim

Respuesta

31

Esto ha sido posted before:

Intent intent = getIntent(); 
finish(); 
startActivity(intent); 

A partir del nivel de la API 11, también puede simplemente llamar al método de una actividad recreate(). No solo es más limpio porque es menos código, sino que evita los problemas que pueden surgir si su actividad se lanzó por un intento implícito.

+0

básicamente, todo lo que quiero hacer es poder llamar a onCreate () método desde el método onRestart(). ¿Cómo haría eso para que onSaveInstanceState() guardara todo? porque con esto, todo se restablece, ¿es que se trata de una actividad totalmente nueva? – Ephraim

+1

la forma en que funciona el programa, es que escribe una palabra y en la pantalla le da un número de cortina correspondiente a esa palabra. si tuviera que cambiar la configuración, el número correspondiente a esa palabra cambiaría. el problema es que la configuración no tendrá efecto hasta que la actividad se reinicie (si tuvieras que cambiar la orientación, permitiría que la configuración surta efecto, pero no lo hará de otro modo) lo que quiero es ser capaz de hacer esto tan pronto como el programa inicie su método onRestart(). (Quiero que el texto en EditText permanezca igual, como en onSaveInstanceState()). – Ephraim

1

Quizás pueda reiniciar la actividad como se ha demostrado, pero pase algunos extras para enviar su cadena de nuevo cuando se reinicia.

Intent intent = getIntent(); 
intent.putExtra(STRINGTOSAVE, "Save this string"); 
finish(); 
startActivity(intent); 

y en su onCreate usted, por supuesto, quieren recuperar la cadena

Intent intent = getIntent(); 
String STRINGTOSAVE = intent.getStringExtra(ActivityName.STRINGTOSAVE); 

y luego usar la cadena recuperada para volver a aplicar el campo de texto y cualquier otra acción que necesita.

Cuestiones relacionadas