Я реализовал карты 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
Ваш фрагмент не может быть найден. Если активность воссоздана, то и Фрагмент - у него не будет карты –
Кроме того, если вы сделаете реализацию Activity 'LocationListener', ваш код будет выглядеть немного чище –