MapFragment - CameraUpdateFactory未初始化

时间:2013-05-31 06:41:14

标签: android google-maps

我在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调用任何东西。

为什么这不起作用?

1 个答案:

答案 0 :(得分:1)

对于下一次更新替换:

Log.e("map", " " + e.getMessage());

使用:

throw new RuntimeException(e);

至少你会得到真正的原因,而不是NPE的症状。

无论如何,如果用户设备上未安装Google Play服务,则此代码永远不会尝试执行。

GooglePlayServicesUtil.isGooglePlayServicesAvailable之类的内容以及其他可以帮助你的功能。