0

我在 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)

我已经读过这样帖子。我在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 调用任何内容。

任何想法为什么这不起作用?

4

1 回答 1

1

对于下一个更新替换:

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

和:

throw new RuntimeException(e);

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

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

有些东西GooglePlayServicesUtil.isGooglePlayServicesAvailable和其他功能会帮助你。

于 2013-05-31T07:53:30.750 回答