我已经实现了自己的ItemizedOverlay类,并使用项目填充了地图。当点击一个项目(气球)时,我的OntAp方法会启动一个包含一些信息的alertDialog。
我想要实现的是:当有人点击该对话框时,会启动一个特定的Intent。 问题是我不知道如何“听到”该对话框的点击。它的大小不固定,也不是它的位置,也没有按钮。
这是ItemizedOverlay类中onTap方法的代码:
@Override
protected boolean onTap(int index) {
OverlayItem item = mOverlays.get(index);
AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
dialog.setTitle(item.getTitle());
dialog.setCancelable(true);
dialog.setMessage(item.getSnippet());
AlertDialog ad = dialog.create();
ad.setCanceledOnTouchOutside(true);
ad.show();
return true;
}
任何人都可以告诉我要覆盖什么样的监听器以及在哪里?我是否已制作自己的自定义AlertDialog实现,这将如何帮助解决我的问题?任何帮助将不胜感激!
答案 0 :(得分:3)
您可以创建自己的MyAlertDialog,扩展AlertDialog并覆盖dispatchTouchEvent(),如下所示:
private class MyAlertDialog extends AlertDialog
{
public MyAlertDialog(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
public boolean dispatchTouchEvent (MotionEvent ev)
{
super.dispatchTouchEvent(ev);
this.dismiss();
return true;
}
}
在您调用Builder的位置,执行以下操作:
mDialog = new MyAlertDialog(mContext);
mDialog.setIcon(R.drawable.poi);
mDialog.setCanceledOnTouchOutside(true);
mDialog.setTitle(item.getTitle());
mDialog.show();
答案 1 :(得分:0)
我无法找到答案,因此我使用了一种解决方法,并在其上添加了一个带有监听器的按钮。但是,这不适用于最终解决方案,它仅用于测试目的。仍在寻找解决方案......