Завершить деятельность - Google Maps Android

1

Я делаю проект с Google Maps для Android. Я создал MapActivity для загрузки некоторых мест, которые я сохранил на сервере. Итак, у меня есть этот класс

public class PlaceItemizedOverlay extends ItemizedOverlay<OverlayItem> {

    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
    Context mContext = null;
    MapActivity mapAct = null;

    public PlaceItemizedOverlay(Drawable defaultMarker, MapActivity map) {
          super(boundCenterBottom(defaultMarker));
              this.macAct = map;
    }

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

    @Override
    protected OverlayItem createItem(int i) {
      return mOverlays.get(i);
    }

    public void addOverlay(OverlayItem overlay) {
        mOverlays.add(overlay);
        populate();
    }


    @Override
    public int size() {
      return mOverlays.size();
    }

    @Override
    protected boolean onTap(int index) {
      OverlayItem item = mOverlays.get(index);
      AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
      dialog.setTitle(item.getTitle());
      dialog.setMessage(item.getSnippet());
      dialog.show();

     this.mapAct.finish();

      return true;
    }

Ну, когда я нажимаю на сохраненное место, программа прерывается.

Я создаю объект на mapActivity:

PlaceItemzedOverlay itemizedoverlay = new PlaceItemizedOverlay(drawable, this);

Не могли бы вы мне помочь?

Большое спасибо!

  • 1
    Опубликуйте Logcat, пожалуйста
  • 0
    Я решил проблему! Большое спасибо! :)
Показать ещё 1 комментарий
Теги:
google-maps
mapactivity
activity-finish

2 ответа

2
Лучший ответ

проблема здесь//часть вашего кода

  @Override
  protected boolean onTap(int index) {
   OverlayItem item = mOverlays.get(index);
   AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
   dialog.setTitle(item.getTitle());
   dialog.setMessage(item.getSnippet());
   dialog.show();//here you show a alert dialog on current activity 

  //this.mapAct.finish();//and here you finish current activity

  return true;
}

при этой ситуации приложение вылетает.. и использует

finish(); 

для тебя

 this.mapAct.finish();
  • 0
    и, пожалуйста, публикуйте свои выходные данные logcat с каждым вопросом для лучшего понимания вопроса для нас.
  • 0
    Большое спасибо! Я решил проблему :)
0

Если, как вы говорите, вы создаете объект itemizedoverlay используя...

PlaceItemzedOverlay itemizedoverlay = new PlaceItemizedOverlay(drawable, this);

... тогда следующая строка недействительна...

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

В основном у вас есть два участника для PlaceItemzedOverlay. Второй параметр одного - это Context а другой - MapActivity. Это только два места, где либо mContext либо mapAct установлены на действительную ссылку, и оба они являются взаимоисключающими. Другими словами, какой бы ни был конструктор, тот или другой из mContext или mapAct останется null.

Смешивание использования mContext и mapAct в методе onTap никогда не будет работать...

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

...

this.mapAct.finish();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню