2012-01-03 11 views
5

Hai bisogno di aiuto nella comprensione di questa eccezione:Cercate di capire "Chiamare startActivity al di fuori di un contesto di attività"

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) 

Qual è il significato da 'al di fuori di un contesto di attività'? Non penso di chiamare "startActivity" dal contesto "Application", quindi cosa significa al di fuori di un'attività Context?

Grazie.

+1

Sembra che tu stia cercando di chiamare startActivity (..) da una classe che non è una classe di attività estesa. – kosa

risposta

5

Come commentato @thinksteep è come se si stesse tentando di chiamare startActivity() da qualcos'altro, quindi un Activity.

Potrebbe essere che si stia tentando di avviare l'attività da Service?

Questo è ciò che stai cercando di fare, dovresti seguire il consiglio nell'avvertimento e aggiungere FLAG_ACTIVITY_NEW_TASK alle tue intenzioni.

Il motivo dell'avvertimento, come si vede, è che si sta tentando di avviare un componente dell'interfaccia utente da qualcosa che non è un componente dell'interfaccia utente. Il più delle volte questo non è ciò che vuoi da una prospettiva di usabilità.

eccezioni potrebbero essere chiamate in arrivo ecc

8

Per clearify la risposta precedente, è necessario aggiungere quanto segue per l'intento prima di iniziare l'attività:

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

Poi Android vi permetterà di cominciare l'attività dove ti piace.

+3

Ma cosa succede se si vuole davvero riprendere una vecchia attività invece di crearne una nuova? Cosa succede se voglio utilizzare FLAG_ACTIVITY_BROUGHT_TO_FRONT? È possibile farlo? –

+0

grazie amico :) –

2

So che è un po 'tardi risposta .. Ma solo ora sono uscito dallo stesso problema. quindi vorrei pubblicarlo in pubblico, potrebbe essere utile per gli altri che si trovano nella stessa situazione. Ho appena usato Myclassname.this anziché getApplicationContext();.

+1

Myclassname dovrebbe essere un contesto per farlo funzionare. –

Problemi correlati