尝试理解“从Activity上下文之外调用startActivity”

时间:2012-01-03 23:21:37

标签: android

需要帮助来理解此异常:

   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”,那么它在活动上下文中的含义是什么?

谢谢。

3 个答案:

答案 0 :(得分:8)

要清除上一个答案,您需要在开始活动之前将以下内容添加到意图中:

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

然后,Android会让您在喜欢它的地方开始活动。

答案 1 :(得分:5)

正如@thinksteep评论的那样,您似乎试图从其他内容调用startActivity(),然后调用Activity

您是否正在尝试从Service开始活动?

这就是您要做的事情,您应该遵循警告中的建议并将FLAG_ACTIVITY_NEW_TASK添加到您的意图标记中。

我发现警告的原因是你试图从一个不是自己的UI组件的东西启动一个UI组件。大多数时候,从可用性的角度来看,这并不是你想要的。

例外情况可能是来电等。

答案 2 :(得分:2)

我知道这有点迟到了。但是刚才我也是从同一个问题出来的。所以我想在公开场合发布这个帖子,对于处于相同情况的其他人可能会有所帮助。我刚使用Myclassname.this代替getApplicationContext();