java.lang.NullPointerException:CameraUpdateFactory未初始化logcat异常

时间:2014-06-27 09:27:11

标签: android android-fragments google-play-services

我正在使用Google地图。我能够成功创建并显示Google地图。现在我要添加CameraUpdate(latitude, longitude)。我用Google搜索并找到了一些源代码,但我得到的是NullPointerException

LogCat错误消息是:

java.lang.NullPointerException: CameraUpdateFactory is not initialized

这是我的来源。我做错了什么?

public class StradaContact extends Fragment {

public final static String TAG = StradaContact.class.getSimpleName();
private MapView mMapView;
private GoogleMap mMap;
private Bundle mBundle;
double longitude = 44.79299800000001, latitude = 41.709981;

public StradaContact() {

}

public static StradaContact newInstance() {
    return new StradaContact();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.strada_contact, container,false);

    mMapView = (MapView) rootView.findViewById(R.id.pointMap);

    mMapView.onCreate(mBundle);
    setUpMapIfNeeded(rootView);

    return rootView;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mBundle = savedInstanceState;
}

private void setUpMapIfNeeded(View inflatedView) {
    if (mMap == null) {
        mMap = ((MapView) inflatedView.findViewById(R.id.pointMap)).getMap();
        if (mMap != null) {
            CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(latitude, longitude));
            CameraUpdate zoom = CameraUpdateFactory.zoomTo(15);
            mMap.moveCamera(center);
            mMap.animateCamera(zoom);
        }
    }
}

@Override
public void onResume() {
    super.onResume();
    mMapView.onResume();
}

@Override
public void onPause() {
    super.onPause();
    mMapView.onPause();
}

@Override
public void onDestroy() {
    mMapView.onDestroy();
    super.onDestroy();
}

}

<com.google.android.gms.maps.MapView
        android:id="@+id/pointMap"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"

        class="com.google.android.gms.maps.MapFragment" />

2 个答案:

答案 0 :(得分:19)

在&#34; onCreate&#34;:

中试试
try {
 MapsInitializer.initialize(this);
} catch (GooglePlayServicesNotAvailableException e) {
 e.printStackTrace();
}

答案 1 :(得分:6)

尝试使用以下方法在使用

之前初始化google map api
MapsInitializer.initialize(getActivity());