2012-01-03 47 views
5

理解這個異常需要幫助「從活動上下文之外調用startActivity」:試着瞭解

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) 

什麼是「一個活動上下文之外」的意義?我不認爲我從「應用程序」上下文中調用了「startActivity」,那麼在活動上下文之外它意味着什麼?

謝謝。

+1

看來你正試圖從一個不是擴展的Activity類的類中調用startActivity(..)。 – kosa 2012-01-03 23:31:36

回答

5

由於@thinksteep評論看起來像你試圖呼籲startActivity()從其他東西然後Activity

難道你試圖從Service開始活動嗎?

這是你正在嘗試做的事情,你應該按照警告中的建議,並將FLAG_ACTIVITY_NEW_TASK添加到你的意圖標誌。

當我看到它的警告的原因是,你試圖從一個不是它自己的UI組件開始一個UI組件。大多數情況下,這不是希望從可用性角度來看。

例外可能是來電等

8

要clearify以前的答案,你需要在開始活動之前,添加以下意圖:

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

那麼Android將讓你開始它令你滿意的活動。

+3

但是如果你確實想恢復舊活動而不是創建新活動呢?如果我想使用FLAG_ACTIVITY_BROUGHT_TO_FRONT,該怎麼辦?這可能嗎? – 2013-02-07 02:39:11

+0

謝謝你:) – 2016-09-26 12:36:13

2

我知道這有點遲到的反應..但剛纔我從同樣的問題出來。所以我想公開發布,這可能對處於同一情況的其他人有幫助。我只是用Myclassname.this而不是getApplicationContext();

+1

Myclassname必須是一個上下文才能工作。 – 2013-08-08 20:39:42