java如何让AlertDialog在泛型类而不是活动中工作
我试图在一个简单的java类中使用AlertDialog,它不是一个活动。我没有活动
我正在尝试通过以下方式初始化它:
alertDialog = new AlertDialog.Builder(context).create();
我认为问题是我使用了Context
而不是getApplicationContext或CurrentActivity
我正在使用一个扩展AsyncTask的类,但我无法让AlertDialog工作,因为它需要其他东西,而不仅仅是编写上下文
我通过以下代码生成了上下文:
Context context;
ClassConstructor (Context ctx){
context = ctx;
}
这就是我获得上下文的方式
我正在学习PHP/SQLAndroid教程,并了解了这个问题。我想我错过了一些东西,但我再也追不上了,所以有人能提供一个解决方案吗
# 1 楼答案
除非将对话框
type
指定为WindowManager.LayoutParams.TYPE_SYSTEM_ALERT
,否则必须使用活动Context
的实例来显示AlertDialog
。如果您尝试使用ApplicationContext
,您将得到一个android.view.WindowManager$BadTokenException
错误更多详细信息请参见:https://stackoverflow.com/a/10159345/2387695
# 2 楼答案
您需要在对话框中调用
.show()
。显示对话框不需要活动上下文。您确实需要将该对话框标记为系统警报对话框请注意,您的应用程序必须具有该权限
另一种方法是使用以对话框为主题的活动,并使用
Context.startActivity()
来显示它