android: NullPointerException FragmentManagerImpl.moveToState(FragmentManager.java) on onResume()
my app work fine but when i'm trying to reclick the current running fragment from navigation drawer. my app crashes. it only happens in one fragment. MAP fragment. i got the error in onResume method. here is my code
package com.munawwar.sultan.NavDrawer;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.munawwar.sultan.R;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.Toast;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.InflateException;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class MapzFragment extends Fragment implements LocationListener {
private GoogleMap mMap;
private LocationManager locationManager;
View view;
public MapzFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (view != null) {
ViewGroup parent = (ViewGroup) view.getParent();
if (parent != null)
parent.removeView(view);
}
try {
view = inflater.inflate(R.layout.fragment_mapz, container, false);
} catch (InflateException e) {
/* map is already there, just return view as it is */
}
return view;
}
/*
* RelativeLayout theLayout = (RelativeLayout) inflater.inflate(
* R.layout.fragment_mapz, container, false); return theLayout; }
*/
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
} // ending on activity created
@Override
public void onResume() {
super.onResume();
setUpMapIfNeeded();
}
private void setUpMapIfNeeded() {
if (mMap != null) {
return;
}
mMap = ((MapFragment) getActivity().getFragmentManager()
.findFragmentById(R.id.map)).getMap();
// Enabling MyLocation Layer of Google Map
mMap.setMyLocationEnabled(true);
// Getting LocationManager object from System Service LOCATION_SERVICE
locationManager = (LocationManager) getActivity().getSystemService(
Context.LOCATION_SERVICE);
// Creating a criteria object to retrieve provider
Criteria criteria = new Criteria();
// Getting the name of the best provider
String provider = locationManager.getBestProvider(criteria, true);
// provider = locationManager.getBestProvider(criteria, false);
// Getting Current Location
Location location = locationManager.getLastKnownLocation(provider);
// ***************current location*******************
if (location != null) {
onLocationChanged(location);
}
// location update
locationManager.requestLocationUpdates(provider, 2000, 0,
(LocationListener) this);
// ****************map*************************
if (mMap == null) {
return;
}
// Initialize map options. For example:
// mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
mMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
// ***********RADIO BUTTONS FOR CHANGING MAP************
RadioGroup rgViews = (RadioGroup) getActivity().findViewById(
R.id.rg_views);
rgViews.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == R.id.rb_hybrid) {
mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
} else if (checkedId == R.id.rb_satellite) {
mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
mMap.setTrafficEnabled(true);
} else if (checkedId == R.id.rb_terrain) {
mMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
mMap.setTrafficEnabled(true);
}
}
});
}
// *********on location listener implemented functions
@Override
public void onProviderDisabled(String provider) {
Toast.makeText(MapzFragment.this.getActivity(),
"Disabled provider " + provider, Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderEnabled(String provider) {
Toast.makeText(MapzFragment.this.getActivity(),
"Enabled new provider " + provider, Toast.LENGTH_SHORT).show();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onLocationChanged(Location location) {
// Getting latitude of the current location
double latitude = location.getLatitude();
// Getting longitude of the current location
double longitude = location.getLongitude();
// Creating a LatLng object for the current location
LatLng latLng = new LatLng(latitude, longitude ...