2016-12-06 3 views
-2

Я реализовал карты google, он отлично работает, пока я не выйду из Activity Activity, чтобы перейти на другую активность, и когда я вернусь назад к активности карты, он затем падает. Я думаю, что это происходит, когда прослушиватель местоположения пытается получить позицию пользователя, пока карта FIRST все еще загружается или карты перегружают друг друга, поэтому как я могу уничтожить свою первую карту, когда я покидаю свою активность в onPause и onDestroy?GoogleMap com.google.android.gms.maps.MapFragment.getMap() 'на ссылке нулевого объекта

Обратите внимание, что мой класс расширяет Activity, а не Fragment или FragmentActivity, и я не использую MapView.

public class ActivityLocate extends Activity 
private GoogleMap map; 

... 

    private void initilizeMap() { 

    lm = (LocationManager)ActivityLocate.this.getSystemService(Context.LOCATION_SERVICE); 

    ll = new LocationListener() { 

     @Override 
     public void onLocationChanged(Location location) { 
      // TODO Auto-generated method stub 

      if (map == null) { 
       map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 

       // check if map is created successfully or not 
       if (map == null) { 
        Toast.makeText(getApplicationContext(),"Failed to load map", Toast.LENGTH_SHORT).show(); 
       } 
      } 

      latitude = location.getLatitude(); 
      longitude = location.getLongitude(); 

      latitudeString = String.valueOf(latitude); 
      longitudeString = String.valueOf(longitude); 

      map.setMyLocationEnabled(true); 

      if (autoCamera.equals("1")) 
      { 
       map.animateCamera(CameraUpdateFactory.zoomTo(4.0f));     
       CameraUpdate center= CameraUpdateFactory.newLatLng(new LatLng(latitude, longitude)); // zoom to current location 
       CameraUpdate zoom=CameraUpdateFactory.zoomTo(8); 
       map.moveCamera(center); 
       map.animateCamera(zoom); 

       autoCamera = "0"; 
      } 
      else 
      { 
       //don't position camera again to allow user to self navigate 
      } 

      accessWebService_getMarkers(); 

     } 

     @Override 
     public void onStatusChanged(String provider, int status, 
       Bundle extras) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onProviderEnabled(String provider) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onProviderDisabled(String provider) { 
      // TODO Auto-generated method stub 

     } 

    }; 

    //LOCATION CHANGE OPTIONS 
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 1, ll); //every minute/meter 

} 

: Жизненные циклы

@Override 
protected void onResume() { 
    super.onResume(); 

    if (map == null) { 
     try { 
      initilizeMap(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

@Override 
public void onPause() { 
    super.onPause(); 

} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 

} 

Ошибка:

Attempt to invoke virtual method 'com.google.android.gms.maps.GoogleMap com.google.android.gms.maps.MapFragment.getMap()' on a null object reference 
+0

Ваш фрагмент не может быть найден. Если активность воссоздана, то и Фрагмент - у него не будет карты –

+1

Кроме того, если вы сделаете реализацию Activity 'LocationListener', ваш код будет выглядеть немного чище –

ответ

1

Google карта V2 не использует GetMap теперь он использует getMapAsync(this);

по этой ссылке Google Map V2 и он будет решать ваша проблема

Смежные вопросы