我在一个教程后创建了一个测试项目并且工作正常。现在我重新安装了我的操作系统并安装了最新版本的android studio 现在我在创建谷歌地图时遇到以下错误:
java.lang.NullPointerException: CameraUpdateFactory is not initialized
我的清单:
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<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"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="........."/>
在这里我的片段:
public class ZooMapFragment extends SupportMapFragment {
public static ZooMapFragment getInstance() {
ZooMapFragment fragment = new ZooMapFragment();
return fragment;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
CameraPosition position = CameraPosition.builder()
.target(new LatLng(39.7500, -104.9500))
.zoom(16f)
.bearing(0.0f)
.tilt(0.0f)
.build();
getMap().animateCamera(CameraUpdateFactory.newCameraPosition(position), null);
getMap().setMapType(GoogleMap.MAP_TYPE_HYBRID);
getMap().setTrafficEnabled(true);
getMap().getUiSettings().setZoomControlsEnabled(true);
MarkerOptions options = new MarkerOptions().position(new LatLng(39.7500, -104.9500));
options.title("ZoO");
options.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE));
getMap().addMarker(options);
getMap().setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
marker.showInfoWindow();
return true;
}
});
RestAdapter adapter = new RestAdapter.Builder()
.setEndpoint(getString(R.string.pins_feed))
.build();
PinsApiInterface pinsApiInterface = adapter.create(PinsApiInterface.class);
pinsApiInterface.getStreams(new Callback<List<Pin>>() {
@Override
public void success(List<Pin> pins, Response response) {
if (pins == null || pins.isEmpty() || !isAdded())
return;
for (Pin pin : pins) {
Log.e("Zoo", pin.getName());
MarkerOptions options = new MarkerOptions().position(new LatLng(pin.getLatitude(), pin.getLongitude()));
options.title(pin.getName());
options.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
getMap().addMarker(options);
}
}
@Override
public void failure(RetrofitError error) {
Log.e("Log", "Retrofit error: " + error.getMessage());
}
});
}
}
我的问题是:
为什么我的应用程序失败了?这个版本可能有什么不同?
答案 0 :(得分:1)
是的我会继续发布并作为答案,以防有些人遇到同样的问题。
因为您正在处理地图,所以即使在代码很好的情况下,模拟器也可能指出错误。我不是专家,但这可能是因为地图需要坐标和模拟器不具备的东西。因此解决方案很简单,只需将其运行到您的Android设备即可,如果您的代码正常,它应该可以正常工作。
答案 1 :(得分:0)
在与此作斗争后,我发现如果在模拟器中安装GApps可以解决问题。现在应用程序正在运行而没有问题