Android java.lang.NullPointerException:CameraUpdateFactory未初始化,正在调用;onResume";
我将从细节活动中获取数据,因此我正在“onResume”上更新地图,它正在animateCamera方法上崩溃。我尝试了所有可用的解决方案。请查找以下代码: 异常:java.lang.NullPointerException:CameraUpdateFactory未初始化Android java.lang.NullPointerException:CameraUpdateFactory未初始化,正在调用;onResume";,android,android-fragments,android-mapview,android-maps-v2,Android,Android Fragments,Android Mapview,Android Maps V2,我将从细节活动中获取数据,因此我正在“onResume”上更新地图,它正在animateCamera方法上崩溃。我尝试了所有可用的解决方案。请查找以下代码: 异常:java.lang.NullPointerException:CameraUpdateFactory未初始化 private void zoomToShowAllMarkers(final GoogleMap map) { final LatLngBounds.Builder builder = new LatLng
private void zoomToShowAllMarkers(final GoogleMap map) {
final LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (MapLocations marker : arrMarkers) {
final LatLng pos = new LatLng(marker.getLatitude(),marker.getLongitude());
builder.include(pos);
map.addMarker(new MarkerOptions().position(pos));
map.animateCamera(CameraUpdateFactory.newLatLngZoom(pos, 17.0f));
}
}
public void onResume() {
super.onResume();
if(mapView!=null && mapView.isShown())
mapView.onResume();
zoomToShowAllMarkers(map);
}
从
在使用此类中的任何方法之前,必须执行以下操作之一:
请执行以下操作以确保该类已初始化:
- 等待添加到应用程序中的
或MapFragment
中的MapView
可用。通过调用GoogleMap
方法并检查返回的对象是否为null,可以验证getMap()
是否可用GoogleMap
- 调用
。只要没有抛出初始化(上下文)
,这个类就会 必须正确初始化GooglePlayServicesNotAvailableException
您必须确保它已初始化,然后才能对其调用任何方法。我认为您应该将您的
ZoomToShoWall标记(map)在if
语句下的code>方法,因为当您尝试设置动画角色时,您的映射视图可能是null
,如下所示:
public void onResume() {
super.onResume();
if(mapView!=null && mapView.isShown()) {
mapView.onResume();
zoomToShowAllMarkers(map);
}
}
我正在测试的设备有一个过时的Google Play服务版本。为了避免null指针,我只做了一个简单的null检查。当用户试图访问地图时,他们会得到一个提示,说他们已经过时了
private void setupMap() {
final GoogleMap map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
MapsInitializer.initialize(this);
double lat = getIntent().getDoubleExtra("lat", 37.6329946);
double lng = getIntent().getDoubleExtra("lng", -122.4938344);
float zoom = getIntent().getFloatExtra("zoom", 15);
LatLng position = new LatLng(lat, lng);
if(null != map) {
map.moveCamera(CameraUpdateFactory.newLatLngZoom(position, zoom));
map.addMarker(new MarkerOptions().position(position));
map.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
@Override
public void onMapLoaded() {
map.snapshot(new GoogleMap.SnapshotReadyCallback() {
@Override
public void onSnapshotReady(Bitmap bitmap) {
mapLoaded(bitmap);
}
});
}
});
}
}
我删除了下面代码中的GooglePlayServicesNotAvailableException catch子句,原因是出现错误“GooglePlayServicesNotAvailableException的不可访问的catch块。此异常从未从try语句体中抛出”。请尝试{MapsInitializer.initialize(This.getActivity());}catch(GooglePlayServicesNotAvailableException e){e.printStackTrace();}感谢您对@Romadja的支持,问题是我有一个映射初始化的条件,它在onCreate期间没有传递,所以这就是崩溃的原因。通过您的评论,这种错误修复方法进行了更深入的讨论。感谢Romadja。