title: Android googleMap Map does not show, only grid, sometimes
body: <p>So, I have been working on getting this up and running for some time now. Problem is I have my map key from Google placed correctly in main.xml, but I can't seem to get a provider information as the map does not display at all. I have run it a couple of times and the fail us at the same place. I tried to debug and noticed that there is a provider string returned, however, after that a null.  </p>
  
  <p>The code fails at </p>
  
  <pre><code>@Override
  protected void onResume() {
      super.onResume();
      locationManager
              .requestLocationUpdates(getBestProvider(), 1000, 1, this);
  }
  </code></pre>
  
  <p>with the following error message. </p>
  
  <pre><code>08-20 05:14:43.573: E/AndroidRuntime(239): Uncaught handler: thread main exiting due to uncaught exception
  08-20 05:14:43.583: E/AndroidRuntime(239): java.lang.RuntimeException: Unable to resume activity {com.shawnbe.mallfinder/com.shawnbe.mallfinder.MallFinderActivity}: java.lang.NullPointerException
  08-20 05:14:43.583: E/AndroidRuntime(239):  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2950)
  08-20 05:14:43.583: E/AndroidRuntime(239):  at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2965)
  08-20 05:14:43.583: E/AndroidRuntime(239):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2516)
  08-20 05:14:43.583: E/AndroidRuntime(239):  at android.app.ActivityThread.access$2200(ActivityThread.java:119)
  08-20 05:14:43.583: E/AndroidRuntime(239):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
  08-20 05:14:43.583: E/AndroidRuntime(239):  at android.os.Handler.dispatchMessage(Handler.java:99)
  08-20 05:14:43.583: E/AndroidRuntime(239):  at android.os.Looper.loop(Looper.java:123)
  08-20 05:14:43.583: E/AndroidRuntime(239):  at android.app.ActivityThread.main(ActivityThread.java:4363)
  08-20 05:14:43.583: E/AndroidRuntime(239):  at java.lang.reflect.Method.invokeNative(Native Method)
  08-20 05:14:43.583: E/AndroidRuntime(239):  at java.lang.reflect.Method.invoke(Method.java:521)
  08-20 05:14:43.583: E/AndroidRuntime(239):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
  08-20 05:14:43.583: E/AndroidRuntime(239):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
  08-20 05:14:43.583: E/AndroidRuntime(239):  at dalvik.system.NativeStart.main(Native Method)
  08-20 05:14:43.583: E/AndroidRuntime(239): Caused by: java.lang.NullPointerException
  08-20 05:14:43.583: E/AndroidRuntime(239):  at com.shawnbe.mallfinder.MallFinderActivity.onResume(MallFinderActivity.java:61)
  08-20 05:14:43.583: E/AndroidRuntime(239):  at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149)
  08-20 05:14:43.583: E/AndroidRuntime(239):  at android.app.Activity.performResume(Activity.java:3763)
  08-20 05:14:43.583: E/AndroidRuntime(239):  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2937)
  08-20 05:14:43.583: E/AndroidRuntime(239):  ... 12 more
  </code></pre>
  
  <p>Occasionally, the code seems launches the grid but no map. While on other runs, it simply fails out. </p>
  
  <p>Below is my activity code. </p>
  
  <pre><code>package com.shawnbe.mallfinder;
  
  import java.util.List;
  
  import com.google.android.maps.GeoPoint;
  import com.google.android.maps.MapActivity;
  import com.google.android.maps.MapController;
  import com.google.android.maps.MapView;
  import com.google.android.maps.Overlay;
  import com.google.android.maps.OverlayItem;
  
  import android.content.Context;
  import android.graphics.drawable.Drawable;
  import android.location.Criteria;
  import android.location.Location;
  import android.os.Bundle;
  import android.widget.TextView;
  import android.widget.Toast;
  
  public class MallFinderActivity extends MapActivity implements
          android.location.LocationListener {
      /** Called when the activity is first created. */
  
      private MapController mapController;
      private MapView mapView;
      private android.location.LocationManager locationManager;
      private GeoPoint currentPoint;
      private Location currentLocation = null;
      private TextView latituteField;
      private TextView longitudeField;
      private String bestProvider;
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
          MapView mapView = (MapView) findViewById(R.id.mapView);
          mapView.setBuiltInZoomControls(true);
          Location location;
          //getBestProvider();
          if(bestProvider !=null)
          location = locationManager.getLastKnownLocation(bestProvider);
  
          List&lt;Overlay&gt; mapOverlays = mapView.getOverlays();
          Drawable drawable = this.getResources().getDrawable(
                  R.drawable.androidmarker);
          MapItemizedOverlay itemizedoverlay = new MapItemizedOverlay(drawable,
                  this);
          LocalGeoPoints loc = new LocalGeoPoints();
          for (OverlayItem a : loc.overlayitems) {
              itemizedoverlay.addOverlay(a);
          }
          mapOverlays.add(itemizedoverlay);
  
      }
  
      @Override
      protected void onResume() {
          super.onResume();
          locationManager
                  .requestLocationUpdates(getBestProvider(), 1000, 1, this);
      }
  
      public void getLastLocation() {
          String provider = getBestProvider();
          currentLocation = locationManager.getLastKnownLocation(provider);
          if (currentLocation != null) {
              setCurrentLocation(currentLocation);
          } else {
              Toast.makeText(this, "Location not yet acquired", Toast.LENGTH_LONG)
                      .show();
          }
      }
  
      public void animateToCurrentLocation() {
          if (currentPoint != null) {
              mapController.animateTo(currentPoint);
          }
      }
  
      public String getBestProvider() {
          locationManager = (android.location.LocationManager) getSystemService(Context.LOCATION_SERVICE);
          Criteria criteria = new Criteria();
          criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);
          criteria.setAccuracy(Criteria.NO_REQUIREMENT);
          bestProvider = locationManager.getBestProvider(criteria, false);
  
          return bestProvider;
      }
  
      public void setCurrentLocation(Location location) {
          int currLatitude = (int) (location.getLatitude() * 1E6);
          int currLongitude = (int) (location.getLongitude() * 1E6);
          currentPoint = new GeoPoint(currLatitude, currLongitude);
          currentLocation = new Location("");
          currentLocation.setLatitude(currentPoint.getLatitudeE6() / 1e6);
          currentLocation.setLongitude(currentPoint.getLongitudeE6() / 1e6);
      }
  
      @Override
      protected boolean isRouteDisplayed() {
  
          return false;
      }
  
      /* Remove the locationlistener updates when Activity is paused */
      @Override
      protected void onPause() {
          super.onPause();
          locationManager.removeUpdates(this);
      }
  
      @Override
      public void onLocationChanged(Location location) {
          int lat = (int) (location.getLatitude());
          int lng = (int) (location.getLongitude());
          latituteField.setText(String.valueOf(lat));
          longitudeField.setText(String.valueOf(lng));
      }
  
      @Override
      public void onProviderEnabled(String provider) {
          Toast.makeText(this, "Enabled new provider " + provider,
                  Toast.LENGTH_SHORT).show();
  
      }
  
      @Override
      public void onProviderDisabled(String provider) {
          Toast.makeText(this, "Disabled provider " + provider,
                  Toast.LENGTH_SHORT).show();
      }
  
      @Override
      public void onStatusChanged(String provider, int status, Bundle extras) {
          // TODO Auto-generated method stub
  
      }
  
  }
  </code></pre>
  
  <p>And below is my  main.xml ccomplete with the key I obtained from the google map registeration site. </p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:orientation="vertical" &gt;
      &lt;FrameLayout 
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"&gt;
          &lt;com.google.android.maps.MapView
          android:id="@+id/mapView"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:clickable="true"
          android:apiKey="0steid872FeGgae0eO2Dhdyei37sFPHG65t7N6XA"/&gt;
      &lt;/FrameLayout&gt;
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p><img src="https://i.stack.imgur.com/VIniO.png" alt="The image below is all I get "></p>