Проблема контекста в примере Android "Google Map View" - PullRequest
4 голосов
/ 13 февраля 2010

Я пытался внедрить учебник Google Map View на сайте разработчиков Android, но у меня постоянно возникает проблема при попытке отобразить AlertDialog, когда я нажимаю на наложенное изображение. Проблема в том, что mContext имеет значение null при вызове

AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);

в методе onTap HelloItemizedOverlay, потому что конструктор

public HelloItemizedOverlay(Drawable defaultMarker, Context context) {
    super(boundCenterBottom(defaultMarker));
    mContext = context;
}

никогда не вызывается (что я могу сказать), который инициализирует mContext. Когда я заменяю

HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable);

с

HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable, 
                this.getApplicationContext());

в методе onCreate HelloGoogleMaps для инициализации контекста я получаю исключение

android.view.WindowManager $ BadTokenException: невозможно добавить окно - нулевой токен не для приложения

когда я пытаюсь отобразить AlertDialog следующим образом:

dialog.show();

Я полагаю, что этот учебник был успешно реализован тысячами людей, поэтому я в растерянности, почему никто другой не столкнулся с этой проблемой ... я пропустил важный шаг из учебника?

Ответы [ 2 ]

11 голосов
/ 13 февраля 2010

Я думаю, вам нужно передать контекст mapView в конструктор HelloItemizedOverlay следующим образом:

HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable, mapView.getContext());

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

1 голос
/ 15 декабря 2010

А в конструкторе вроде должно быть:

super(boundCenterBottom(defaultMarker));

не

super(defaultMarker);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...