如何从地图上显示的轻触AlertDialog启动意图

时间:2012-01-18 09:18:34

标签: android google-maps android-intent alertdialog ontouchevent

我已经实现了自己的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实现,这将如何帮助解决我的问题?任何帮助将不胜感激!

2 个答案:

答案 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)

我无法找到答案,因此我使用了一种解决方法,并在其上添加了一个带有监听器的按钮。但是,这不适用于最终解决方案,它仅用于测试目的。仍在寻找解决方案......