Search code examples
androidgoogle-mapsmapactivityactivity-finish

Finish Activity - Google Maps Android


I'm doing a project with Google Maps for Android. I've created a MapActivity to load some places I've saved on the server. So I have this class

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;
    }

Well, when I click at a saved place, the program breaks.

I'm creating the object on the mapActivity:

PlaceItemzedOverlay itemizedoverlay = new PlaceItemizedOverlay(drawable, this);

Can you help me please?

Many Thanks!


Solution

  • the problem is here //part of your code

      @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;
    }
    

    at this situation application crashes.. and use

    finish(); 
    

    for your

     this.mapAct.finish();