我全部, 我有一个MapActivity类,它将Activity和一个名为MapRenderer的关联类扩展为另一个包中的类。 (在调试时看到堆栈,可以看到控件确实从MapActivity传递到MapRenderer) 在一个特定的应用程序输入动作上,即当用户触摸屏幕时,我需要弹出一个android对话框。管理此操作的代码存在于MapRenderer类中(不扩展任何类),方法类似。
class MapRenderer{
public void drawRoute(Canvas canvas,String routeName) {
if(condition 0){
//Do 0 related stuff
}
if(condition N){
//Do N related stuff
// I need to implement the alert dialog at this place
AlertDialog.Builder builder1 = new AlertDialog.Builder(context);
builder1.setMessage("Write your message here.");
builder1.setCancelable(true);
builder1.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
builder1.setNegativeButton("No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert11 = builder1.create();
alert11.show();
}
if(condition inbetween){
//Do inbetween related stuff
}
}
}
但是,如果我尝试从没有实现Activity的类(在本例中为“MapRenderer”)调用对话框,这似乎会发出错误。 你能否确认像AlertDialog popup这样的动作需要这样的代码,因为看到sbove只能在扩展的类中编写 活动?
答案 0 :(得分:1)
不可以,只要用于创建context
的{{1}}对象有效且属于Dialog
。我通常将Activity
作为参数传递给我的帮助方法,然后在调用Activity
之前检查dialog.show()
答案 1 :(得分:0)
您可以在任何地方书写它。请记住,在运行时它需要一个Activity来显示自己。因此,传递给构建器的上下文必须是具有Activity的上下文。