ViewPager 内的 CameraUpdate、SupportMapFragment,第二次未加载
CameraUpdate, SupportMapFragment inside ViewPager, not loading second time
我在将 SupportMapFragment 放置在包含 5 个选项卡的 viewpager 的片段中时遇到问题,当 viewpager 第一次加载地图时一切正常,但从另一个选项卡返回时不显示任何内容。我加载地图如下:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
FragmentManager fm = getFragmentManager();
mapFragment = (SupportMapFragment) fm.findFragmentById(R.id.map_estate);
if (mapFragment == null) {
mapFragment = SupportMapFragment.newInstance();
fm.beginTransaction().replace(R.id.map_estate, mapFragment).commit();
}
mapFragment.getMapAsync(this);
}
然后像这样使用它:
@Override
public void onMapReady(GoogleMap googleMap) {
this.map = googleMap;
this.map.setMyLocationEnabled(true);
this.map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
this.map.getUiSettings().setMyLocationButtonEnabled(false);
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(center, 16);
mapFragment.getMap().moveCamera(cameraUpdate);
}
有人面临同样的问题吗?提前致谢
用 FragmentManager fm = getChildFragmentManager();
替换 FragmentManager fm = getFragmentManager();
解决了问题。
我在将 SupportMapFragment 放置在包含 5 个选项卡的 viewpager 的片段中时遇到问题,当 viewpager 第一次加载地图时一切正常,但从另一个选项卡返回时不显示任何内容。我加载地图如下:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
FragmentManager fm = getFragmentManager();
mapFragment = (SupportMapFragment) fm.findFragmentById(R.id.map_estate);
if (mapFragment == null) {
mapFragment = SupportMapFragment.newInstance();
fm.beginTransaction().replace(R.id.map_estate, mapFragment).commit();
}
mapFragment.getMapAsync(this);
}
然后像这样使用它:
@Override
public void onMapReady(GoogleMap googleMap) {
this.map = googleMap;
this.map.setMyLocationEnabled(true);
this.map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
this.map.getUiSettings().setMyLocationButtonEnabled(false);
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(center, 16);
mapFragment.getMap().moveCamera(cameraUpdate);
}
有人面临同样的问题吗?提前致谢
用 FragmentManager fm = getChildFragmentManager();
替换 FragmentManager fm = getFragmentManager();
解决了问题。