我的应用程序中有两个片段。 Ons是一个映射片段,另一个是列表片段。这两个都添加到单个活动中。我们的想法是,当从列表中选择用户时,应用程序切换到地图片段并显示用户。问题是我在GoogleMap对象上获得了nullPointer异常。
我知道地图有效,因为按下地图片段中的按钮,我可以看到我当前的位置,而且我没有得到NullPointer。
这是我的ListFragment中的onClickListener:
listEmployees.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ChildUser childUser = children.get(position);
Tracker.showMapFragment(childUser);
}
});
这是从我的父Activity中的ListFragment调用的函数:
public static void showMapFragment(ChildUser childUser) {
mViewPager.setCurrentItem(0, true);
MapFragment.showSelectedUser(childUser);
trackingEmployee = true;
}
这是我在MapFragment中的适用代码:
初始化:
mMapFragment = new SupportMapFragment() {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.d("MAP", "on activity created");
googleMap = mMapFragment.getMap();
googleMap.getUiSettings().setZoomControlsEnabled(false);
}
};
getChildFragmentManager().beginTransaction().add(R.id.map, mMapFragment).commit();
showSelectedUser函数:
public static void showSelectedUser(ChildUser childUser) {
try {
googleMap.clear();
LatLng point = new LatLng(childUser.getChildLatitude(), childUser.getChildLongetude());
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(point, 15);
MarkerOptions marker = new MarkerOptions();
marker.position(point);
googleMap.addMarker(marker);
googleMap.animateCamera(cameraUpdate);
} catch (NullPointerException e) {
e.printStackTrace();
}
}
我在googleMap.clear();
得到一个NullPointerException。请告诉我,当我从MapFragment中显示当前位置时,它可能会出错。如果您需要其他信息,请与我们联系。提前谢谢!
更新
当MapFragment可见并按下按钮时,我可以使用以下代码查看用户在MapFragment中的当前位置:
public static void showUserLocation() {
googleMap.clear();
if (Tracker.clockedInShift) {
CacheUploads cacheUpload = new CacheUploads(context);
LatLng point = cacheUpload.getMostRecentLocation();
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(point, 15);
MarkerOptions marker = new MarkerOptions();
marker.position(point);
googleMap.addMarker(marker);
googleMap.animateCamera(cameraUpdate);
}
}
地图已正确链接,因为此代码已成功执行。从ListFragment访问时,为什么googleMap对象为null?如果您需要更多信息,请告诉我们!感谢
答案 0 :(得分:0)
看起来这个问题的答案相当明显。使用内部类解决了问题。以下代码解决了所有问题:
private static GoogleMap googleMap;
public static class MyMapFragment extends SupportMapFragment {
public MyMapFragment() {
super();
}
public static MyMapFragment newInstance() {
MyMapFragment frag = new MyMapFragment();
return frag;
}
@Override
public View onCreateView(LayoutInflater arg0, ViewGroup arg1, Bundle arg2) {
View v = super.onCreateView(arg0, arg1, arg2);
googleMap = getMap();
return v;
}
}
然后只需使用googleMap做任何你想做的事情。上面的代码应该在你的Activity / Fragment中。