【发布时间】:2019-05-04 07:48:24
【问题描述】:
我有一个基于 Google Maps 的应用程序,它使用方法 getMap(),现在使用新模型 getMapAsync,当我想清除或一般使用 GoogleMap 对象时遇到了麻烦,
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void com.google.android.gms.maps.GoogleMap.clear()”。
我正在使用片段。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_passenger_page1,
container, false);
MapFragment fm = (MapFragment) mainActivity.getFragmentManager().findFragmentById(R.id.map);
fm.getMapAsync(this);
...
}
问题出在我使用的时候:
@Override
public void onResume() {
mMap.clear();
if (listMarkers.size() > 0)
{
setMarker(listMarkers);
}
super.onResume();
}
App每次打开都会调用这个函数,表示mMap为null。
请帮帮我。
【问题讨论】:
-
mMap初始化在哪里?我在这段代码中没有看到它。 -
您遇到了这个问题,因为地图是异步的,这意味着您的 onResume 将在此之前触发,您将获得初始化的地图对象。查看第一个答案,然后在 getMapAsync 完成后使用地图对象。
-
我实现了在地图准备好后运行的 clear() 函数,我需要这样做,因为我不想每次应用程序打开时都创建地图对象,如果应用程序is onPause 我想保留地图。