我正在使用导航抽屉片段为谷歌地图,但我的谷歌地图属性显示为空

时间:2015-04-15 07:20:40

标签: android google-maps android-fragments google-maps-api-3 nullpointerexception

我正在使用Google地图api进行谷歌地图,地图即将进行分段,但每当我尝试创建地图实例但我的谷歌地图变量显示为空。

//this is my class extends android.support.v4.app.Fragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    MapView mapView;
    view=inflater.inflate(R.layout.location, container, false);
    if (map == null) 
    {
        mapView = (MapView) view.findViewById(R.id.googlemapfragment1);

        mapView.onCreate(savedInstanceState);

        if(mapView!=null)
        {
            map = mapView.getMap();
            map.getUiSettings().setMyLocationButtonEnabled(false);
            map.setMyLocationEnabled(true);
            map.getUiSettings().setZoomControlsEnabled(true);
        }
        if(map!=null)
        {
            Log.e("not null","not null");
        }
    }
    return view;
}

xml文件是这样的          

<fragment
   android:id="@+id/googlemapfragment1"
   android:name="com.google.android.gms.maps.SupportMapFragment"
   android:layout_width="wrap_content"
   android:layout_height="match_parent"
   android:layout_alignParentLeft="true"
   android:layout_alignParentRight="true"
   android:layout_below="@+id/spinner1" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

我认为您应该使用新引入的方法以异步方式获取地图。尝试使用

SupportMapFragment mapView = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.googlemapfragment1);
mapView .getMapAsync(new OnMapReadyCallback() {
    @Override
    public void onMapReady(GoogleMap arg0) {
        map = arg0;
        map.getUiSettings().setMyLocationButtonEnabled(false);
        map.setMyLocationEnabled(true);
        map.getUiSettings().setZoomControlsEnabled(true);
    }
});

如果您无法看到该方法,请更新您的Google Play服务。