Google Map getMapAsync()NullPointerException

时间:2017-05-06 08:22:15

标签: android google-maps

将getMap()更改为getMapAsync()并实现OnMapReadyCallback后,我收到错误NullPointerException。

这里是logcat

  

引起:java.lang.NullPointerException:尝试在pym.example.com.fypv2上的空对象引用上调用虚拟方法'void com.google.android.gms.maps.GoogleMap.setMyLocationEnabled(boolean)'。 callme.Callme.onCreate(Callme.java:117)`

这里是代码

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
        .findFragmentById(R.id.map);
mapFragment.getMapAsync(this);

// Enabling MyLocation in Google Map
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
    // TODO: Consider calling
    //    ActivityCompat#requestPermissions
    // here to request the missing permissions, and then overriding
    //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
    //                                          int[] grantResults)
    // to handle the case where the user grants the permission. See the documentation
    // for ActivityCompat#requestPermissions for more details.
    return;
}
mGoogleMap.setMyLocationEnabled(true);

和OnMapReady

@Override
public void onMapReady(GoogleMap googleMap) {
    mGoogleMap = googleMap;
}

1 个答案:

答案 0 :(得分:4)

您需要在mGoogleMap.setMyLocationEnabled(true);中准备好地图后致电onMapReady

更改您的代码如下:

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);


    @Override
public void onMapReady(GoogleMap googleMap) {
    mGoogleMap = googleMap;
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            // TODO: Consider calling
            //    ActivityCompat#requestPermissions
            // here to request the missing permissions, and then overriding
            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
            //                                          int[] grantResults)
            // to handle the case where the user grants the permission. See the documentation
            // for ActivityCompat#requestPermissions for more details.
            return;
        }
        mGoogleMap.setMyLocationEnabled(true);
}