Как запустить намерение из подключенного AlertDialog, показанного на карте - PullRequest
0 голосов
/ 18 января 2012

Я реализовал свой собственный класс ItemizedOverlay и заполнил карту элементами.При касании элемента (всплывающей подсказки) мой метод OntAp запускает alertDialog с некоторой информацией.

Я пытаюсь добиться этого: когда кто-то нажимает на это диалоговое окно , запускается определенное намерение.Проблема в том, что я не знаю, как «услышать» нажатие на это диалоговое окно.Его размер не является фиксированным, как и его местоположение, и у него также нет кнопок.

Это код метода onTap в классе ItemizedOverlay:

    @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 ]

3 голосов
/ 23 ноября 2012

Вы можете создать свой собственный 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();
0 голосов
/ 24 января 2012

Мне не удалось найти ответ на этот вопрос, поэтому я использовал обходной путь и добавил кнопку со слушателем.Тем не менее, это не будет делать для окончательного решения, это только для целей тестирования.Все еще ищу решение ...

...