我在Google Play报告的应用中收到以下错误:
...
Caused by: java.lang.NullPointerException: CameraUpdateFactory is not initialized
at com.google.android.gms.internal.x.b(Unknown Source)
at com.google.android.gms.maps.CameraUpdateFactory.aE(Unknown Source)
at com.google.android.gms.maps.CameraUpdateFactory.newCameraPosition(Unknown Source)
at com.foo.DetailActivity.onCreate(DetailActivity.java:144)
我已经阅读了this这样的帖子。我在DetailActivity
(扩展FragmentActivity)中的代码如下:
try {
MapsInitializer.initialize(this);
} catch (GooglePlayServicesNotAvailableException e) {
Log.e("map", " " + e.getMessage());
}
SharedPreferences settings = getPreferences(0);
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(new LatLng(settings.getFloat("lat", -28.709861f), settings.getFloat("lon", 26.015625f)))
.zoom(settings.contains("lat") ? 11 : 6)
.build();
CameraUpdate cu = CameraUpdateFactory.newCameraPosition(cameraPosition); //line 144
我不确定它是如何仍未被初始化的。在我的代码中,我还没有创建MapFragment。我不认为在创建MapFragment之后需要这样做,因为我没有从MapFragment调用任何东西。
为什么这不起作用?
答案 0 :(得分:1)
对于下一次更新替换:
Log.e("map", " " + e.getMessage());
使用:
throw new RuntimeException(e);
至少你会得到真正的原因,而不是NPE的症状。
无论如何,如果用户设备上未安装Google Play服务,则此代码永远不会尝试执行。
有GooglePlayServicesUtil.isGooglePlayServicesAvailable
之类的内容以及其他可以帮助你的功能。