不是从 Activity 启动 AlertDialog

Posted

技术标签:

【中文标题】不是从 Activity 启动 AlertDialog【英文标题】:Launch AlertDialog not from an Activity 【发布时间】:2011-06-26 00:11:58 【问题描述】:

我试图在不在扩展活动的类中时启动警报对话框,但我在 GUI 线程上。我可以访问我的应用程序上下文并尝试使用它启动警报对话框,但出现错误:

02-12 00:48:07.412: ERROR/androidRuntime(1322): android.view.WindowManager$BadTokenException: 无法添加窗口 -- 令牌 null 不适用于应用程序

有人知道我在这个问题上做错了什么吗?

【问题讨论】:

是整个事情,还是有一个堆栈? 【参考方案1】:

抱歉,只能通过 Activity 启动对话框。

如果您愿意,欢迎您创建一个使用Theme.Dialog 或看起来有点像对话框的活动。

【讨论】:

所以我知道您可以通过应用程序上下文启动 Toast。我如何确定哪些东西只能通过活动上下文启动,哪些东西也可以通过应用程序上下文启动。描述这一点的文档中是否有埋藏的地方?再次感谢 @metalideath:Toasts 工作。 startActivity() 有效。对话框只能从活动中打开。您可以通过搜索 *** 或反复试验来确定这一点——此类内容往往不会包含在文档中,因为没有明显的位置。 所以总结一下,以防其他人有同样的问题。您不能从应用程序的上下文启动对话框,但可以从活动上下文启动它。如果想要与对话框类似的外观效果,那么您可以创建一个使用对话框主题的活动,并使用应用程序上下文通过 startActivity 启动它。

以上是关于不是从 Activity 启动 AlertDialog的主要内容,如果未能解决你的问题,请参考以下文章

位置监听器 - 不是从服务启动,而是从活动开始

检查应用程序是从最近的应用程序还是从启动器图标恢复

Android Activity的启动

启动Activity时的方法调用(应用层)(MVC模式)

启动Activity时的方法调用(应用层)(MVC模式)

启动Activity时的方法调用(应用层)(MVC模式)