Question

I am getting NullPointerException while initializing a GoogleMap,

Following is my code:

 public class MapActivity extends FragmentActivity {

    private GoogleMap mapa = null;
    private double lat, lng;
    private double oldlat, oldlng;
    private String titulo;
    private boolean marcador;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map);

        mapa = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

        lat = 0;
        lng = 0;
        oldlat = 0;
        oldlng = 0;
        marcador = false;

        mapa.setOnMapClickListener(new OnMapClickListener() {
            public void onMapClick(LatLng point) {
                Projection proj = mapa.getProjection();
                Point coord = proj.toScreenLocation(point);

                Toast.makeText(
                        MapActivity.this, 
                        "Estás en :\n" + 
                        "Lat: " + point.latitude + "\n" +
                        "Lng: " + point.longitude + "\n" +
                        "X: " + coord.x + " - Y: " + coord.y,
                        Toast.LENGTH_SHORT).show();
            }
        });

        mapa.setOnCameraChangeListener(new OnCameraChangeListener() {
            public void onCameraChange(CameraPosition position) {
                    lat = position.target.latitude;
                    lng = position.target.longitude;
            }
        });

        mapa.setOnMarkerClickListener(new OnMarkerClickListener() {
            public boolean onMarkerClick(Marker marker) {
                Toast.makeText(
                        MapActivity.this, marker.getTitle(),
                        Toast.LENGTH_SHORT).show();
                return false;
            }
        });

    }

Api key is good wrote and the exception is in this line...

mapa = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

And AndroidManifest is good, like layout :

<fragment
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.MapFragment"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1" />

AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    <uses-feature android:glEsVersion="0x00020000"
          android:required="true"/>

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="18" />

<application
   [...]
     <meta-data android:name="com.google.android.maps.v2.API_KEY"
           android:value="AIzaSyAwfktd5wjjUPaf4cCxQzP3IKZxiTNTiwc"/>
        <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
        <uses-library android:name="com.google.android.maps" />
</application>
</manifest>

No correct solution

OTHER TIPS

my view in xml is like this and it works not MapFragment but SupportMapFragment

<fragment
          android:id="@+id/map"
          android:layout_width="400dp"
          android:layout_height="400dp"
          android:name="com.google.android.gms.maps.SupportMapFragment"/>

Change

mapa = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

To

mapa = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

You're using map fragment not support map fragment.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top