2012-01-03 6 views
5

necesitar ayuda para comprender esta excepción:Trate de entender "Calling startActivity desde fuera de un contexto de actividad"

system_log_all 11-14 11:52:28.540 E/AndroidRuntime(31615): FATAL EXCEPTION: main 
system_log_all 11-14 11:52:28.540 E/AndroidRuntime(31615): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? 
system_log_all 11-14 11:52:28.540 E/AndroidRuntime(31615): at android.app.ContextImpl.startActivity(ContextImpl.java:689) 
system_log_all 11-14 11:52:28.540 E/AndroidRuntime(31615): at android.content.ContextWrapper.startActivity(ContextWrapper.java:258) 
system_log_all 11-14 11:52:28.540 E/AndroidRuntime(31615): at android.content.ContextWrapper.startActivity(ContextWrapper.java:258) 

¿Cuál es el significado de 'fuera de un contexto de actividad'? No creo que llame a 'startActivity' desde 'Application' Context, entonces, ¿qué significa por fuera de una actividad Context?

Gracias.

+1

Parece que está intentando llamar a startActivity (..) de una clase que no es de clase de actividad extendida. – kosa

Respuesta

5

Como se ha comentado @thinksteep, parece que está intentando llamar al startActivity() desde algo más que un Activity.

¿Es posible que intente iniciar la actividad desde un Service?

Esto es lo que está tratando de hacer, debe seguir los consejos de la advertencia y agregar FLAG_ACTIVITY_NEW_TASK a sus banderas de intención.

El motivo de la advertencia, como yo lo veo, es que está intentando iniciar un componente de la interfaz de usuario a partir de algo que no es un componente de interfaz de usuario. La mayoría de las veces esto no es lo que quieres desde una perspectiva de usabilidad.

excepciones podrían ser llamadas entrantes etc.

8

clearify la respuesta anterior, es necesario añadir lo siguiente a la intención antes de iniciar la actividad:

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

Entonces Android le permitirá empezar la actividad donde te agrada.

+3

Pero, ¿y si realmente desea reanudar una actividad anterior en lugar de crear una nueva? ¿Qué sucede si quiero usar FLAG_ACTIVITY_BROUGHT_TO_FRONT? ¿Es posible hacer esto? –

+0

gracias hombre :) –

2

Sé que es un poco tarde en la respuesta ... Pero acabo de salir del mismo problema. así que me gustaría publicar esto en público, puede ser útil para otros que están en la misma situación. Acabo de utilizar Myclassname.this en lugar de getApplicationContext();.

+1

Myclassname tendría que ser un contexto para que funcione. –

Cuestiones relacionadas